2013-12-16 8 views
6

だったかどうかをチェックするために:: fflushはドキュメント(http://en.cppreference.com/w/cpp/io/c/fflush):にfflush - どのように最後の操作がStdから出力動作

は、ファイルの実際の 内容と同期させるためのファイル出力ストリームを引き起こします。指定されたストリームが入力タイプの である場合、または指定されたストリームが更新タイプの場合は、動作は未定義ですが、最後の入出力操作は出力操作ではありませんでした( )。

ファイルのサイズをディスクで取得できるようにするにはfflushを呼び出す必要がありますが、最後の操作が入力か出力かわかりません。未定義の動作を防ぐために、FILEの最後の操作が出力操作であったかどうかを確認する方法はありますか? documentationから

答えて

5

:更新のためにオープンファイルで

(読み取りと足す両方について、すなわち、開)、ストリームが入力操作を行う前に、出力動作の後にフラッシュされなければなりません。 これは、あなたは、単にそれがのために開いたファイルのために安全でなければならない場合でも、(fflushを呼び出すために避けるべきであるIMOその後

をFFLUSH(のfseek、fsetpos、巻き戻し)を再配置することにより、または明示的に呼び出すことによってのいずれかで行うことができますI/O)を使用し、fseekを使用してカーソルを移動します。

関連する問題