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

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

基本上使用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. 读入所有旧行,直到你需要覆盖的行,并将它们写入另一个输出流(新文件指针或stdout
  2. 将新行写出到输出流
  3. 在覆盖的行之后读入所有旧行,并将这些行写入新的输出流

如果要覆盖现有字节, 并且确定旧行和新行的长度完全相同,那么您可以:

  1. rw模式fopen()文件
  2. fseek()到旧行的字节位置(或读入字符,直到你达到一些预设数量的换行符,等等 – 基本上,你想将文件指针移动到旧行的开头)
  3. fwrite()旧行的字节上的新字节
  4. fclose()文件指针

如果你真的需要在同一个文件中覆盖字节并且新行字节数比旧行 ,那么你可以做一些技巧,用空格字符覆盖旧行的末尾直到换行符,但更干净解决方案是简单地使用更新的内容编写新文件。