Linux操作系统下C语言实现一个进度条

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hansionz/article/details/82620225
进度条

要求:实现的进度条必须是动态递增的,而且要实现进度说明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

猜你喜欢

转载自blog.csdn.net/hansionz/article/details/82620225