fflush() — ファイルへのバッファーの書き込み
形式
#include <stdio.h>
int fflush(FILE *stream);言語レベル
ANSI
スレッド・セーフ
はい
説明
fflush() 関数を使用すると、システムは、指定された出力 streamに関連したバッファーを空にします (可能な場合)。 stream が入力用にオープンされている場合、 fflush() 関数はすべての ungetc() 関数の効果を取り消します。 呼び出しの後、stream はオープンしたままになります。
stream が NULL の場合は、システムはすべてのオープン・ストリームをフラッシュします。
注: ストリームをクローズすると、またはストリームをクローズせずにプログラムが正常に終了すると、システムは自動的にバッファーを削除します。
戻り値
fflush() 関数は、バッファーを正常に削除すると、値 0 を戻します。 エラーが発生した場合は EOF を戻します。
errno の値は、次のいずれかに設定されます。
- 値
- 意味
- ENOTOPEN
- ファイルはオープンされていません。
- ERECIO
- ファイルはレコードの入出力用にオープンされています。
- ESTDIN
stdinをオープンできません。- EIOERROR
- 回復不能入出力エラーが起こりました。
- EIORECERR
- 回復可能入出力エラーが起こりました。
fflush() 関数は、 type=recordでオープンされたファイルではサポートされていません。
例
次の例はストリーム・バッファーを削除します。
#include <stdio.h>
int main(void)
{
FILE *stream;
int ch;
unsigned int result = 0;
stream = fopen("mylib/myfile", "r");
while ((ch = getc(stream)) != EOF && isdigit(ch))
result = result * 10 + ch - '0';
if (ch != EOF)
ungetc(ch,stream);
fflush(stream); /* fflush undoes the effect of ungetc function */
printf("The result is: %d\n", result);
if ((ch = getc(stream)) != EOF)
printf("The character is: %c\n", ch);
}