0

以下の方法で使用fprintfしています。すべて問題ないように見えfprintfますが、ファイルにまったく出力されません!

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

奇妙なのは、fprintfが返されることOKです。上記のコードで返さ6れますが、ファイルに出力されません!

ファイルは正常に作成されましたが、空です。

に変更すると、printf印刷も行われOKます。

4

1 に答える 1

4

fprintf他の stdio 出力関数はバッファリングされます。つまり、出力は最初にメモリに格納され、後で実際に出力されることはありません。標準出力を使用して画面に出力する場合、新しい行ごとにバッファーがフラッシュされるため、printfすぐに出力が表示されますが、ファイルに出力する場合、(たとえば) 4096 バイトを書き込むまでバッファーはフラッシュされません。fflush(pFile);何らかの理由で出力をファイルにすばやく表示する必要がある場合は、バッファをフラッシュするために追加できます。

を呼び出すときfclose、またはプログラムを適切に終了することによって暗黙的にファイルを閉じるときにもバッファはフラッシュされますが、プログラムがファイルを閉じずに実行し続ける場合、またはプログラムがクラッシュする場合はfflush、ファイルの出力を確認する必要があります。

于 2013-10-25T10:27:58.907 に答える