进度条
要求:实现的进度条必须是动态递增的,而且要实现进度说明x%
,另外,还有应该实现一个旋转的光标,表示正在加载中。
**解决思路:**对于进度条,每次输出的比前面多一个,在每次输出之前回车一下并且睡眠一下在输出;对于x%
可以根据循环变量来确定;对于旋转光标,可以设置一个数组[|/=\\]
每四个一循环输出刚好是以顺时针循环。
注意:
- 1.C语言中
\n
代表回车并换行。\r
表示换行。(回车代表的是回到行头,换行代表的是换到下一行) - 2.C函数printf输出内容到标准显示器上,首先将数据写到输出缓冲区,而这个缓冲区是按照行刷新的,也就是碰到
\n
才会输出到屏幕上。所以每次回车之后,要手动刷新一下输出缓冲区才可以。
- 3.
sleep
是按照秒的睡眠的,对于进度条显示太慢了。usleep
是按照us(微秒)
睡眠的1秒=10^6微秒
(usleep的头文件是<usistd.h>
)
代码实现:
1 #include <stdio.h>
2 #include<unistd.h>
3
4 int main()
5 {
6 char bar[102]={'\0'};//0-100总共有101个数字包括'\0'
7 char* lable="|/-\\";// \为转义字符\\才能代表一个\
8 int i=0;
9 while(i<=100)
10 {
11 bar[i++]='>';//每次多输出一个
12 printf("\033[1;33;40m[%-100s] \033[1;33;40m[%d%%][%c]\r",bar,i,lable[i%4]); //改变输出颜色
13 //printf("[%-100s][%d%%][%c]\r",bar,i,lable[i%4]);
14 fflush(stdout);//刷新输出缓冲区
15 usleep(100000);
16
17 }
18 printf("\n");
19 return 0;
20 }
关于如何该表printf
函数的输出颜色,请查看下面这篇博客:
https://blog.csdn.net/bingoo_t/article/details/53222393