【Linux】 简易小程序-进度条

进度条即计算机在处理任务时以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。
理解:
要实现进度条,就要在缓冲区里,所以,我们需要注意几点:
1.缓冲区:分为 无缓冲,行缓冲,全缓冲
无缓冲,是指没有缓冲,可以将信息立马显示出来。具体代表是标准错误流stderr
行缓冲,是输入输出遇到换行才执行的操作。具体代表是键盘的操作
全缓冲,是输入输出写满缓冲区才执行I/O操作。具体代表是磁盘的读写
2.fflush函数:清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时。
fflush(stdin)刷新标准输入缓冲区,把输入缓冲区的东西清除。
fflush(stdout):刷新标准输出缓冲区,把输出缓冲区里的打印到标准输出设备上
3.为了让打印进度条时,两边的框固定,预留100个字节,所以写为%100s,左对齐,加“ -”
4.memset函数:它的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去
5.换行和回车:换行是指 光标换到下一行,用\n;回车是指回车到当前行最开始,用\r。进度条在一行,所以用\r
6.usleep函数:能把进程挂起一段时间,单位是 微秒。在这里使用它,可以很明显看到变化。
7.%%输出%

 #include<stdio.h>
 #include<string.h>
 #include<unistd.h>
 int main()
 {        
       int i=0;
      char bar[102];
      memset(bar,'\0',sizeof(bar));
      const char *lable="|/-\\";//添加一个标签,按顺时针输出
      for(;i<=100;i++)
      {    
          bar[i]='*';
          printf("[%-100s][%d%%][%c]\r",bar,i,lable[i%4]);  //  - 左对齐, %%输出%                                                                                                                        
          fflush(stdout);//输出缓冲区
          usleep(100000);//挂起一段时间
      }    
      printf("\n");
 } 

在这里插入图片描述

你可能感兴趣的:(Linux)