0
for(j = 1; j < 11; j++)
        {
            printf("%ds ",j);
            sleep(1);
        }

私は、このコードが「1s 2s 3s ... 10s」と出力することを期待していましたが、それらの間に 1 秒の間隔がありますが、代わりに 10 秒後にすべての数字を出力します。どのように修正すればよいですか?私はubuntuに取り組んでいます。

4

2 に答える 2

2

ストリームはバッファリングされるstdoutため、すぐに結果が必要な場合は、そのバッファをフラッシュする必要がありますfflush():

for (j = 1; j < 11; j++) {
    printf("%ds ", j);
    fflush(stdout);
    sleep(1);
}
于 2011-04-07T19:34:30.660 に答える
0

\n を printf に追加してフラッシュします。

for(j = 1; j < 11; j++)
        {
            printf("%ds\n",j);
            sleep(1);
        }

詳細については、こちらを参照してください。

于 2011-04-07T19:30:34.573 に答える