fflush関数は、ファイルポインタで示されるストリームのバッファリングされているデータを強制的に出力(フラッシュ)します。

#include <stdio.h>
int fflush(FILE *stream);

*streamはfopen関数で取得した、ファイルポインタを指定します。

戻り値として、成功した場合は0が、エラーの場合はEOFの値を返します。

バッファに蓄積されたデータは、バッファが満杯になったり、ファイルを閉じるとフラッシュされますので、通常はfflush関数を使う必要はありません。fflush関数は出力結果を直ちに反映したいような場合に使用します。

プログラム 例

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int     count;

  printf('ベルを鳴らす回数を入力してください ==> ');
  scanf('%d', &count);

  for ( ; count > 0; --count) {
    printf('%c', 0x07);    /* ベルを鳴らす */
    fflush(stdout);

    sleep(1);
  }

  return 0;
}

例の実行結果

1秒間隔で、5回ベルが鳴ります。

$ ./fflush.exe
ベルを鳴らす回数を入力してください ==> 5
$