7

重複の可能性:
改行が書式文字列に含まれていない限り、呼び出し後に printf がフラッシュされないのはなぜですか?

次のようなものを実行すると

for (i = 1; i <= 10; i++) {
    sleep(1);
    printf(".");
}

私が期待するのは、毎秒1ドットが10回です。私が得るのは、10秒後に10個のドットです。なぜそうなのですか、また、プログラムに実際に 1 秒ごと (または異なる時間間隔) に 1 つのポイントを印刷 (または他のこと) させるにはどうすればよいですか?

4

1 に答える 1

11

printf()データをバッファリングしているので、次のコマンドでそのデータを強制的にフラッシュできますfflush(stdout)

for (i = 1; i<=10; i++) 
{  
    sleep(1); 
    printf("."); 
    fflush(stdout);
}
于 2012-11-14T19:29:03.923 に答える