以下の方法で使用fprintf
しています。すべて問題ないように見えfprintf
ますが、ファイルにまったく出力されません!
fprintf(pFile, "%s\n", "print");
奇妙なのは、fprintf
が返されることOK
です。上記のコードで返さ6
れますが、ファイルに出力されません!
ファイルは正常に作成されましたが、空です。
に変更すると、printf
印刷も行われOK
ます。
fprintf
他の stdio 出力関数はバッファリングされます。つまり、出力は最初にメモリに格納され、後で実際に出力されることはありません。標準出力を使用して画面に出力する場合、新しい行ごとにバッファーがフラッシュされるため、printf
すぐに出力が表示されますが、ファイルに出力する場合、(たとえば) 4096 バイトを書き込むまでバッファーはフラッシュされません。fflush(pFile);
何らかの理由で出力をファイルにすばやく表示する必要がある場合は、バッファをフラッシュするために追加できます。
を呼び出すときfclose
、またはプログラムを適切に終了することによって暗黙的にファイルを閉じるときにもバッファはフラッシュされますが、プログラムがファイルを閉じずに実行し続ける場合、またはプログラムがクラッシュする場合はfflush
、ファイルの出力を確認する必要があります。