0

在 for 循环中,如果我要添加新行,那么它会在每次迭代时打印,如果我只是给出逗号,则意味着我想在一行中打印倒计时,那么它正在等待 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

您在评论中的猜测是正确的,这是因为输出被缓冲了。如果您想要立即输出,那么您必须使用fflushafter 函数刷新缓冲区printf

于 2013-09-16T05:37:36.123 回答