Printing 使用sleep()函数在循环中逐个打印秒数 (j=1;j

Printing 使用sleep()函数在循环中逐个打印秒数 (j=1;j,printing,ubuntu,sleep,seconds,Printing,Ubuntu,Sleep,Seconds,我希望这段代码会打印“1s 2s 3s…10s”,它们之间有1秒的间隔,但它会在10秒后打印所有数字。我该怎么修? 我正在ubuntu上工作 在printf中添加\n以刷新 for(j = 1; j < 11; j++) { printf("%ds ",j); sleep(1); } (j=1;j

我希望这段代码会打印“1s 2s 3s…10s”,它们之间有1秒的间隔,但它会在10秒后打印所有数字。我该怎么修?
我正在ubuntu上工作

在printf中添加\n以刷新

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

{
printf(“%ds\n”,j);
睡眠(1);
}

有关更多信息,请参阅。

标准输出流是缓冲的,因此如果您立即想要结果,则需要使用
fflush()
刷新该缓冲区:

(j=1;j<11;j++)的
{
printf(“%ds”,j);
fflush(stdout);
睡眠(1);
}

不正确。换行符不需要刷新标准输出缓冲区,更重要的是,它将打破原始asker的格式;我发布了前面一个问题的链接,该问题讨论了fflush()和禁用缓冲区。让我们不要在这里重复,让他读原始问题。让我们不要在这里重复?你提出了一些完全无关的建议:换行。你的答案只有一部分是有用的,另一个问题。@nightcracker:我可能没有用最好的方式来表述它,但我想说的是,它直到最后才打印出来,因为缓冲区没有被刷新,当您将换行符放入打印字符串中时,printf会自动执行的操作。但仅当打印到终端时。
for(j = 1; j < 11; j++)
        {
            printf("%ds\n",j);
            sleep(1);
        }
for (j = 1; j < 11; j++) {
    printf("%ds ", j);
    fflush(stdout);
    sleep(1);
}