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

如何在C中编辑txt文件中的一行?,c,C,我试图编辑txt文件中的第一行,但由于某些原因,它将用空格字符替换下一行 int main() { FILE *myFile; myFile = fopen("test.txt", "r+"); fprintf(myFile, "Hello\n"); fclose(myFile); } 运行前的txt文件代码: i like this Hello this 运行代码后的txt文件: i like this Hello this 你的代码没有替换行,而是替换字节。您的

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

int main()
{
  FILE *myFile;
  myFile = fopen("test.txt", "r+");
  fprintf(myFile, "Hello\n");
  fclose(myFile);
}
运行前的txt文件代码:

i
like
this
Hello

this
运行代码后的txt文件:

i
like
this
Hello

this

你的代码没有替换行,而是替换字节。您的字符串Hello\n有六个字节长。文件的前六个字节类似于I\n。一旦代码执行完毕,就有Hello\n\n这个-即“Hello”,两个换行符和“this”


如果您试图仅替换第一行,则需要读取整个文件,对其进行行分析,替换要替换的行,然后写出新内容。

您的代码没有替换行,而是替换字节。您的字符串Hello\n有六个字节长。文件的前六个字节类似于I\n。一旦代码执行完毕,就有Hello\n\n这个-即“Hello”,两个换行符和“this”


如果您试图仅替换第一行,则需要读取整个文件,对其进行行分析,替换要替换的行,然后写出新内容。

您是指fprintfmyFile,您好\n;而不是Fprintfile,您好\n;您是指fprintfmyFile,您好\n;而不是Fprintfile,您好\n;如果文件包含数百万行呢?其实没有什么不同。如果文件具有可变长度的行,则不知道任何给定行的起始或结束位置。您可以通过逐行读取并边读边写来减少内存占用,但您仍然需要读取整个文件并再次写入。@user3408660如果您有一个复杂的用例,请在新问题中详细描述它。有各种各样的技巧,但它们取决于具体情况。您是否必须经常对相同的数据执行此操作?您是否可以控制访问该文件的所有内容?以此类推。如果文件包含数百万行呢?其实没有什么不同。如果文件具有可变长度的行,则不知道任何给定行的起始或结束位置。您可以通过逐行读取并边读边写来减少内存占用,但您仍然需要读取整个文件并再次写入。@user3408660如果您有一个复杂的用例,请在新问题中详细描述它。有各种各样的技巧,但它们取决于具体情况。您是否必须经常对相同的数据执行此操作?您是否可以控制访问该文件的所有内容?等等