你如何写C中的文本文件的特定行?

时间:2014-04-01 23:02:16

标签: c file output

我想覆盖txt文件中的某一行,同时保持所有其他行相同。有这么好的简单方法吗?

2 个答案:

答案 0 :(得分:2)

基本上使用Fseek()来搜索要更改的位序列,
然后使用Fwrite()覆盖旧文本

OBS:您需要以rw模式打开文件以覆盖

fopen ("myfile.txt", "wr");

使用那些参考:

http://www.cplusplus.com/reference/cstdio/fwrite/
http://www.cplusplus.com/reference/cstdio/fseek/

(它说C ++但适用于C)

答案 1 :(得分:1)

除非你覆盖的行的长度具有相同的字节数,否则你不能插入"或"删除"字节进入或来自现有文件。你必须写一个新文件:

  1. 读入您需要覆盖的所有旧行,并将它们写入另一个输出流(新文件指针或stdout
  2. 将新行写出到输出流
  3. 在覆盖的行之后读入所有旧行,并将这些行写入新的输出流
  4. 如果要覆盖现有字节,您确定旧行和新行的长度完全相同,那么您可以:

    1. fopen() rw模式下的文件
    2. fseek()到旧行的字节位置(或以字符读取,直到你达到预设数量的换行符等为止 - 基本上,你想将文件指针移动到旧行的开头)
    3. fwrite()在旧行的字节
    4. 上的新字节
    5. fclose()文件指针
    6. 如果你真的需要覆盖同一个文件中的字节,并且你的新行的少于字节比旧行,你可能会做一些技巧,用空格覆盖旧行的末尾字符直到换行符,但更简洁的解决方案是简单地写一个包含更新内容的新文件。