尝试在c中制作倒数计时器时没有输出

时间:2014-10-22 10:17:39

标签: c sleep countdown carriage-return

我试图使用以下代码制作一个基本的倒数计时器

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    printf("Enter time in minutes:");
    int x = 0;
    scanf("%d", &x);
    x = x*60;
    while(x!=0) {
        printf("Remaining time is %d\r", x);
        x--;
        sleep(1);
    }
    return 0;
}

但是,当我运行x = 1的代码时,我没有立即输出。无论如何要解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

标准输出默认为行缓冲。如果是

printf("Remaining time is %d\n", x);

请注意此处的\n,每次看到\n时都会输出。

但是,在您的情况下,您有意使用回车\r。另一种方法是手动清除标准,如下所示:

printf("Remaining time is %d\r", x);
fflush(stdout);