Linux终端显示下载进度
在Linux的终端下更新、下载、安装工具时,会有一个类似68%这样动态变化的进度值,这是如何做到的呢
我首先想到了清屏
Turbo中可以使用clrscr(),头文件canio.h
Dev-C++中可以使用windows.h中的system(“cls”);
但是终端那么多内容,不可能全部删除,再重新输出吧,效率特别低不说,执行一次cls,会将终端所有的内容清除,根本不可能再重新输出。
linux下的clear命令,是将能看到的这一“页”屏幕翻过去,你还可以通过滚动条查看历史记录。
所以我们看到的那些更新或下载进度的实现不可能是上面这种方法。
在网上查了查,原来只用一条简单的语句就可以实现,而且还是C语言最简单的函数,准确的说是一个字符”\r”
printf(“\r”);
在printf()第一个参数最后加上”\r”字符,下一次的输出就会覆盖这一行。
更新示例
#include<stdio.h>
#include<windows.h>
int main()
{
int i;
printf("downloading SwordGame from onestraw.net...\n");
for(i=0; i<=100; i++)
{
printf("finish %d%%...\r",i);
Sleep(100);
}
printf("\ndone\n");
return 0;
}
留下评论