fflush
ストリームをフラッシュします。
int fflush(
FILE *stream
);
パラメーター
- stream
FILE 構造体へのポインター。
戻り値
fflushバッファーが正常にフラッシュする場合は 0 を返します。値 0 は指定したストリームにバッファーがない場合または読み取り専用に開かれている場合。EOF の戻り値はエラーを示します。
[!メモ]
fflush が EOF が返された場合データ消失書き込みのエラーが原因である場合があります。重大なエラー ハンドラーを設定するとバッファー setvbuf の関数の回転または _open など低水準 I/O ルーチンを使用すると安全なストリーム入出力の代わりに _close と _write します。
解説
fflush の関数はストリームをフラッシュします。stream に関連付けられたファイルを出力は開いている場合はそれに fflush の書き込みはストリームに関連付けられているバッファーの内容を格納します。ストリームが入力のために開いている場合はfflush はバッファーの内容を消去します。fflush は stream に対して ungetc に前の呼び出しの影響を無効にします。またfflush(NULL) は出力を開いたすべてのストリームをフラッシュします。呼び出しの後で開いたストリームのままです。fflush はバッファリングされていないストリームには影響しません。
バッファーはディスクに自動的にデータを書き込む最適なタイミングを決定するオペレーティング システムによって通常は保持されます : バッファーがいっぱいになるとストリームを閉じるかプログラムでストリームを閉じずに正常に終了した場合。ランタイム ライブラリのコミットにディスク上の機能は重要なデータがオペレーティング システムのバッファーではなくディスクに直接書き込むことを確認することができます。既存のプログラムの書き換えせずに COMMODE.OBJ とプログラムのオブジェクト ファイルをリンクしてこの機能を有効にできます。生成された実行可能ファイルで_flushall の呼び出しはディスクにすべてのバッファーの内容を書き込みます。_flushall COMMODE.OBJ と fflush だけに影響されます。
コミットメントにディスク上の機能を制御する方法についてはストリーム入出力fopen と _fdopen を参照してください。
この関数は呼び出し元のスレッドをロックおよびスレッド セーフです。ロックされていないバージョンについては_fflush_nolock を参照してください。
必要条件
Function |
必須ヘッダー |
---|---|
fflush |
<stdio.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_fflush.c
#include <stdio.h>
#include <conio.h>
int main( void )
{
int integer;
char string[81];
// Read each word as a string.
printf( "Enter a sentence of four words with scanf: " );
for( integer = 0; integer < 4; integer++ )
{
scanf_s( "%s", string, sizeof(string) );
printf( "%s\n", string );
}
// You must flush the input buffer before using gets.
// fflush on input stream is an extension to the C standard
fflush( stdin );
printf( "Enter the same sentence with gets: " );
gets_s( string, sizeof(string) );
printf( "%s\n", string );
}
これはテスト。 これは testThis
テストです。 これはscanf に 4 単語の文です : testEnter これはテスト。 この 。 is a テスト 同じステートメントを取得します : 入力します。これはテスト。 これはテスト。
同等の .NET Framework 関数
System:: IO:: FileStream:: フラッシュ