如何在C中的txt文件中编辑一行?

use*_*660 1 c

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

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

运行代码前的txt文件:

i
like
this
Run Code Online (Sandbox Code Playgroud)

运行代码后的txt文件:

Hello

this
Run Code Online (Sandbox Code Playgroud)

小智 7

你的代码没有替换行,它是替换字节.你的字符串("Hello \n")是六个字节长.你文件的前六个字节是"我不喜欢".一旦你的代码执行了你就有了"Hello \n \nthis" - 即'Hello',两个换行符和'this'.

如果您只是尝试替换第一行,则需要读取整个文件,解析行,替换要替换的行,然后写出新内容.

  • 没有什么不同.如果文件具有可变长度行,则您不知道任何给定行的开始或结束位置.您可以通过逐行读取并逐行写入每行来减少内存占用,但仍需要读取整个文件并再次写入. (3认同)
  • @ user3408660如果您有复杂的用例,请在新问题中详细描述.有各种各样的技巧,但它们取决于具体细节.(您是否经常对相同的数据执行此操作?您是否可以控制访问该文件的所有内容?依此类推.) (2认同)