覆盖文本文件中的特定行?

如何在c?中覆盖文本文件中的特定行? 我在需要写入文件的多个变量中有值。

这仅适用于新行与旧行大小相同的情况:

  • 以模式a+打开文件
  • fseek()到文件的开头
  • 在阅读下一行之前,请使用ftell()来记录行的开头
  • 阅读该行
  • 如果它是你想要的行, fseek()再次使用ftell()的结果并使用fwrite()来覆盖它。

如果行的长度发生变化,则必须复制该文件。

由于文件(从C的标准库的角度来看)不是面向行的,而只是一系列字符(或二进制模式中的字节),因此您不能期望在行级别轻松编辑它们。

正如Aaron所描述的,如果你的替换是完全相同的字符数,你当然可以替换构成该行的字符。

您也可以(可能)通过在末尾(在行终止符之前)使用空格填充来插入更短的替换。 那当然有点粗糙。