fflush 〜printfで文字が表示されない!?を回避〜


目次に戻る


fflush関数はWindowsでもサポートされているのですが、どちらかというとUNIXでよく使い ます。
 
UNIX系でprintfを使って文字を表示する場合、改行の"\n"を出力しないかぎり画面 に文字が表示されないことは有名な話です。しかし、場合によっては改行しないで画面に 文字を表示したいときがあります。そういうとき、fflushを使うと望み通りに文字列を画面に 表示する事が可能です。
 
#include <stdio.h>

int main()
{
    int i;

    /* fflushを使用しない場合 */
    for( i=0 ; i<100 ; i++ ){
      printf("a");     /* ここでは画面に表示されない */
      for( j=0 ; j<10000 ; j++ ){  /* 時間待ち */
           ;
      }
    }
    printf("OK\n");   /* ここで一括して表示される */ 
 

    /* fflushを使用した場合 */
    for( i=0 ; i<100 ; i++ ){
      printf("a");
      fflush( stdout );  /* ここで画面に表示される */
      for( j=0 ; j<10000 ; j++ ){  /* 時間待ち */
           ;
      }
    }
    printf("OK\n");

    return 0;
}



目次に戻る