【发布时间】:2017-01-30 16:08:27
【问题描述】:
我在迭代写入 C 中的 .txt 文件时遇到困难。
我需要在 for 循环的每次迭代之后写出一系列值,这样如果我在任何时候停止程序运行,我都不会丢失我已经收集的数据。
如果我运行整个循环,我的代码可以工作,但是如果我使用 ctrl+c 命令停止程序运行,因为它花费的时间太长,我的 .txt 文件是空的。
我不知道这是否是由 ctrl+c 命令引起的,因为文件没有机会关闭,但有其他解决方案吗?我应该在每次循环迭代期间打开文件并关闭它并附加到 .txt 文件吗?我认为这可能会导致之前写入 .txt 文件的数据被覆盖,也会导致运行时间增加。
这是我目前正在做的一个非常简单的例子,希望它能说明我正在努力完成的事情:
FILE *fp;
fp = fopen("Output.txt", "w");
int a = 0;
int b = 0;
int c = 0;
for(int i=0;i<500;i++)
{
a = a+1;
b = b+1;
c = c+1;
printf("a = %d\tb = %d\tc = %d\n"); // printing to console
fprintf(fp,"%d,%d,%d\n",a,b,c); // printing to file
}
fclose(fp);
【问题讨论】:
-
在每次迭代中添加
fflush(fp);。或者将其设置为无缓冲。