- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在用 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在每个 fprintf
到文件之后。
If stream points to an output stream or an update stream in which the most recent operation was not input,
fflush()
shall cause any unwritten data for that stream to be written to the file, and the last data modification and last file status change timestamps of the underlying file shall be marked for update.
也就是说,
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
fflush(fp); /* <== here */
}
PS:空白不是稀缺商品。
关于c - 如何在 c 中迭代地将文本附加到 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940428/
我是一名优秀的程序员,十分优秀!