如何在linux中用C语言写一个项目来实现进度条?(如下图所示)
我们知道\r是回车,\n是换行(且会刷新)
我们可以用 \r
将光标移回行首,重新打印一样格式的内容,覆盖旧的内容,由于机器运行速度非常快,看起来就像原地修改一样
代码如下
#include<stdio.h>
#include<unistd.h> //需要使用函数fflush来刷新
#include<string.h>
int main()
{
char bar[101];
int cnt=0;
memset(bar,' ',sizeof(bar)); //将bar数组中的所有符号换成\0
char lable[]="|\\-/";
while(cnt<=100)
{
bar[cnt]='>';
printf("[%s][%d][%c]\r",bar,cnt,lable[cnt%4]); //注意要加上\r,不能使用\n
//由于\r不会刷新数据,屏幕上看不到打印内容,我们使用fflush刷新屏幕
fflush(stdout); //stdout是标准输出(屏幕)
bar[cnt++]='-';
usleep(75000);//让程序休眠,否则运行过快,我们看不到
}
printf("\n");
return 0;
}
编译运行结果如下
可以看到,进度条成功输出