覆盖文本文件中的特定行?
如何在c?中覆盖文本文件中的特定行? 我在需要写入文件的多个变量中有值。
这仅适用于新行与旧行大小相同的情况:
- 以模式
a+
打开文件 -
fseek()
到文件的开头 - 在阅读下一行之前,请使用
ftell()
来记录行的开头 - 阅读该行
- 如果它是你想要的行,
fseek()
再次使用ftell()
的结果并使用fwrite()
来覆盖它。
如果行的长度发生变化,则必须复制该文件。
由于文件(从C的标准库的角度来看)不是面向行的,而只是一系列字符(或二进制模式中的字节),因此您不能期望在行级别轻松编辑它们。
正如Aaron所描述的,如果你的替换是完全相同的字符数,你当然可以替换构成该行的字符。
您也可以(可能)通过在末尾(在行终止符之前)使用空格填充来插入更短的替换。 那当然有点粗糙。