2

ループが実行されるたびにテキストを印刷したかったのですが、私のプログラムはループが最後に実行されたときにのみ印刷します。私のコード:

while (shots>i){
  printf ("%s", message);
  i++;
  sleep(1);
}

最後に、すべての出力を一度に取得します。

4

3 に答える 3

6

fflush(stdout);afterを追加しprintfて、出力をバッファから にフラッシュしますstdout

バッファがいっぱいになるか、「\ n」などの特殊文字が来る前に出力が行われません。stdout手動で( call で)行う必要がありますfflush

于 2013-09-08T13:45:21.173 に答える
3

fflushを使用してみてください。これにより、スリープが実行される前に stdout バッファーがクリアされます。したがって、新しいコード ブロックは次のようになります。

while (shots>i){
  printf ("%s", message);
  fflush(stdout);
  i++;
  sleep(1);
}
于 2013-09-08T13:46:15.993 に答える
2

printfバッファーを使用します。そのため、バッファがいっぱいになったとき、またはバッファがフラッシュされたときにのみ出力されます。

于 2013-09-08T13:45:59.207 に答える