为什么不是' \ b'在下面的C代码中工作?

时间:2017-05-12 13:36:16

标签: c linux gcc

以下是我的代码: -

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

int main()
{
    int i;
    printf("Continue in...");
    for (i = 10; i > 0 ; --i)
    {
        printf("%d",i);
        sleep(1);
        printf("\b");
    }
}

我正在尝试在C中制作一个倒数计时器,这样只有i的值在STDOUT上改变,而且&#34; 继续在...... &#34;留在壳上(即在屏幕的同一位置)。

但是上面的代码在10秒内没有产生任何结果,而只是打印字符串&#34;继续...&#34;在第10秒之后。

我读了this回答,其中说明\ b的行为取决于终端。 我的问题是我应该在代码中编辑什么来使其输出独立于输出设备。

1 个答案:

答案 0 :(得分:-1)

您必须在\n之后的printf("%d",i);中添加%d。因为缓冲区没有用新行刷新或直到它已满。