【问题标题】:How to edit one line in txt file in C?如何在C中编辑txt文件中的一行?
【发布时间】:2015-03-12 00:10:48
【问题描述】:

我正在尝试编辑 txt 文件中的第一行,但由于某种原因,它会将下一行替换为空白字符...

int main()
{
  FILE *myFile;
  myFile = fopen("test.txt", "r+");
  fprintf(myFile, "Hello\n");
  fclose(myFile);
}

运行代码前的txt文件:

i
like
this

运行代码后的txt文件:

Hello

this

【问题讨论】:

  • 你的意思是fprintf(myFile, "Hello\n");而不是fprintf(file, "Hello\n");

标签: c


【解决方案1】:

您的代码没有替换行,而是替换了字节。您的字符串 ("Hello\n") 有六个字节长。文件的前六个字节是“I\nlike”。一旦你的代码执行完毕,你就有了“Hello\n\nthis”——即“Hello”、两个换行符和“this”。

如果你想只替换第一行,你需要读取整个文件,解析它的行,替换你想要替换的行,然后写出新的内容。

【讨论】:

  • 如果文件包含数百万行怎么办?
  • 没什么不同。如果文件有可变长度行,您不知道任何给定行的开始或结束位置。您可以通过逐行读取并随时写入每一行来减少内存占用,但您仍然需要读取整个文件并再次写入。
  • @user3408660 如果您有复杂的用例,请在新问题中详细描述。有各种各样的技巧,但它们取决于具体情况。 (您是否必须经常对相同的数据执行此操作?您是否可以控制访问文件的所有内容?等等。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2019-03-02
  • 1970-01-01
  • 2023-03-27
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多