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 回答