2013-05-15 73 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);' –