2013-05-15 70 views
0

我已经打开了一个文件,用于将一些数据写入文件,但是它会一直保存缓冲区,直到程序结束才会写入任何内容。我如何跳过缓冲过程并直接写入文件。C语言:无缓冲写入文件

我的代码:

fprintf (fp, "# Step: %d %f\n", ntot, eDiff); 
for(i=0; i<nType; i++) 
    fprintf (fp, "%s %f %f\n",param[i].cTypes, param[i].eps, param[i].sigma); 
fprintf(fp, "# ============\n"); 
+0

这可能是因为在某些怪异的方式缓冲的OS,如果有任何缓冲可言。有一些可能有所帮助 - > http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline-is-in-the-format-条形码 – Etherealone

+0

您错过了fopen,fsync和fclose调用。你甚至缺少main()。你如何期待我们帮助你? – CAFxX

+1

使用'setvbuf'缓冲控制。 – BLUEPIXY

回答

4

使用fflush()函数的流:

fflush(fp); 
+0

或者你可以使用'setbuf(fp,NULL);' –