我正在以如下方式使用fprintf
。一切似乎沒問題,但fprintf
根本不打印到我的文件!fprintf函數無法正常工作,但它返回正數
fprintf(pFile, "%s\n", "print");
東西是奇怪的是,fprintf
回報OK
。它在上面的代碼中返回6
,但不打印到文件!
文件已成功創建,但爲空。
將其更改爲printf
正在打印並且OK
也正在打印。
我正在以如下方式使用fprintf
。一切似乎沒問題,但fprintf
根本不打印到我的文件!fprintf函數無法正常工作,但它返回正數
fprintf(pFile, "%s\n", "print");
東西是奇怪的是,fprintf
回報OK
。它在上面的代碼中返回6
,但不打印到文件!
文件已成功創建,但爲空。
將其更改爲printf
正在打印並且OK
也正在打印。
fprintf
和其他stdio輸出功能被緩衝,這意味着輸出首先存儲在內存中,直到後來纔打印出來。當使用標準輸出打印到屏幕上時,每個新行都會刷新緩衝區,所以printf
會立即看到輸出結果,但打印到文件時,直到寫入(例如)4096字節之前,緩衝區纔會被刷新。如果您由於某種原因需要輸出快速出現在文件中,您可以添加fflush(pFile);
以刷新緩衝區。
當調用fclose
或通過正確退出程序隱式關閉文件時,緩衝區也會被刷新,但如果程序在不關閉文件的情況下繼續運行,或者崩潰,則需要fflush
才能看到文件。
非常感謝你!它幫助了我。 :) –
你是怎麼打開pFile的?你打開文件時是否檢查了返回值? – Claudio
請顯示打開文件的代碼。 –
你在調用'fclose'嗎?如果沒有,緩衝區可能不會被刷新! – caspase