C回车:改变输出,如apt-get

时间:2014-07-14 08:22:36

标签: c carriage-return

在某些基于Linux的操作系统(如Ubuntu)中,您可以使用apt-get命令从终端内的Internet下载。当您下载某些内容时,它会显示已下载的软件包百分比。此百分比随着包的下载而变化。如何使C程序以类似的方式运行?这是我的代码

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

int main(){
    int i = 0;
    for (; i < 10; i++){
        printf("\rCalculating...%d%%",i);
        usleep(500000);
    }
    printf("\n");
    return 0;
}

我使用gcc来编译它,但不是像我预期的那样在输出中获得Calculating...1%Calculating...2%等,而是没有出现任何内容。几秒钟后,唯一的输出是Calculating...9%\n。中间没有显示数字。这是为什么?

2 个答案:

答案 0 :(得分:2)

好吧,在每个fprintf之后添加一个fflush(stdout)来强制闪烁

答案 1 :(得分:0)

奇怪......我在ideone.com上运行它,你的代码运行正常,这是我得到的输出:

Calculating...0%
Calculating...1%
Calculating...2%
Calculating...3%
Calculating...4%
Calculating...5%
Calculating...6%
Calculating...7%
Calculating...8%
Calculating...9%

所以应该是这样......当我有时间的时候,我会试着调查一下