2013-10-25 83 views
0

我正在以如下方式使用fprintf。一切似乎沒問題,但fprintf根本不打印到我的文件!fprintf函數無法正常工作,但它返回正數

fprintf(pFile, "%s\n", "print"); 

東西是奇怪的是,fprintf回報OK。它在上面的代碼中返回6,但不打印到文件!

文件已成功創建,但爲空。

將其更改爲printf正在打印並且OK也正在打印。

+0

你是怎麼打開pFile的?你打開文件時是否檢查了返回值? – Claudio

+0

請顯示打開文件的代碼。 –

+3

你在調用'fclose'嗎?如果沒有,緩衝區可能不會被刷新! – caspase

回答

3

fprintf和其他stdio輸出功能被緩衝,這意味着輸出首先存儲在內存中,直到後來纔打印出來。當使用標準輸出打印到屏幕上時,每個新行都會刷新緩衝區,所以printf會立即看到輸出結果,但打印到文件時,直到寫入(例如)4096字節之前,緩衝區纔會被刷新。如果您由於某種原因需要輸出快速出現在文件中,您可以添加fflush(pFile);以刷新緩衝區。

當調用fclose或通過正確退出程序隱式關閉文件時,緩衝區也會被刷新,但如果程序在不關閉文件的情況下繼續運行,或者崩潰,則需要fflush才能看到文件。

+0

非常感謝你!它幫助了我。 :) –