0

for ループでは、新しい行を追加すると、各反復で印刷されます。コンマを指定するだけの場合は、カウントダウンを 1 行に印刷したいという意味で、for ループの完了を待っています。どの部分が欠けていますか?

次のコードは、反復が完了するたびに最新のカウントダウンを出力します ('\n' のため)。

#include <stdio.h>

int main () {
    int x;
    for (x =0; x< 10; x++) {
        printf("%d\n", x);
        sleep(1);
    }
    printf("Fire!\n");
    return 1;
}

次のコードは最新のカウントダウンを出力しませんが、すべてが完了すると出力します (',' が原因である可能性があります)。

#include <stdio.h>

int main () {
    int x;
    for (x =0; x< 10; x++) {
        printf("%d, ", x);
        sleep(1);
    }
    printf("Fire!\n");
    return 1;
}
4

2 に答える 2

2

stdoutバッファを明示的にフラッシュできます。

for (x =0; x< 10; x++) {
    printf("%d, ", x);
    fflush(stdout);
    sleep(1);
}
于 2013-09-16T05:37:11.513 に答える
2

コメントの推測は正しいです。これは、出力がバッファリングされているためです。すぐに出力が必要な場合は、fflush関数 afterでバッファをフラッシュする必要がありますprintf

于 2013-09-16T05:37:36.123 に答える