你如何写入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)
除非您覆盖的行的长度具有相同的字节数,否则不能在现有文件中“插入”或“删除”字节。 你必须写一个新文件:
- 读入所有旧行,直到你需要覆盖的行,并将它们写入另一个输出流(新文件指针或
stdout
) - 将新行写出到输出流
- 在覆盖的行之后读入所有旧行,并将这些行写入新的输出流
如果要覆盖现有字节, 并且确定旧行和新行的长度完全相同,那么您可以:
- 以
rw
模式fopen()
文件 -
fseek()
到旧行的字节位置(或读入字符,直到你达到一些预设数量的换行符,等等 – 基本上,你想将文件指针移动到旧行的开头) -
fwrite()
旧行的字节上的新字节 -
fclose()
文件指针
如果你真的需要在同一个文件中覆盖字节并且新行的字节数比旧行少 ,那么你可以做一些技巧,用空格字符覆盖旧行的末尾直到换行符,但更干净解决方案是简单地使用更新的内容编写新文件。