あるファイルタイプを別のファイルタイプに変換する簡単な小さなプログラムがあります。fprintf() へのかなりの数の呼び出しがあります (変換するファイルのサイズにほぼ比例して依存します)。私が始めたとき、fflush() への呼び出しはありませんでした。小さなファイル (<10 Kb) では、まったく問題はありませんでした。大きなファイル (>40 Kb) では、fclose() の呼び出しに達すると、全体がクラッシュしました。
それで、バッファをいっぱいにしすぎているのではないかと思ったので、およそ* 512 回の fprintf の呼び出しの後に fflush() の呼び出しを入れました (各呼び出しは 8 ~ 10 文字を出力します)。fclose() を呼び出すと、プログラムは引き続きクラッシュします。
*実際には fprintf の呼び出しをカウントしておらず、プログラムに既にある別のカウントを使用しているため、この数が 512 未満になる可能性があります。
これは私の質問につながります。fflush() はいつ呼び出す必要がありますか? 一定量のデータが fprintf された後に呼び出す必要がありますか? または、私が見逃しているものがありますか?
ありがとう
ちなみに、私は Windows 7 (64 ビット) を使用しており、出力ファイルを "a+" モードで fopen しました。