【Linux】Linux系统下进度条的模拟实现

来源:互联网 发布:好身材 知乎 编辑:程序博客网 时间:2024/05/16 07:23

前言:

在我们平时下载电影或者进入Centos平台下肯定都见过一个描述的当前进度的标识,----这就是一个进度条

本篇blog,我就来讲讲我的实现。


实现思路:

(1)进度条是从0-100%,开辟一个长度为101的字符数组,最后一个放\0,每次往前走一个我就打印一个=这个符号,形象地展示此时的进度。

(2)要借助缓冲区,每次从缓冲区取字符数组,利用\r(只回车不换行),只回车不换行的意思就是:每次接着在这一行打印,如果换行的话,那效果就是:第1行打印一个=,第2行打印==,类似……所以,我们在这里选择只回车不换行功能的\r,(注意转义字符)。

(3)在C语言中,格式输出中,我利用了

<span style="font-family:Microsoft YaHei;font-size:14px;"> printf("[%-100s] %d %% %c",rate,i+1,move[i%4]);  </span>

[%-100s],意思是:打印时可以将右方括号]固定位置在100位置处,负号的原因是:从左往右打印。

(4)为方便大家看此时是正在进行,还是由于网络等原因,进度卡了。我在这里利用了:

<span style="font-family:Microsoft YaHei;font-size:14px;">   char move[5]="-\\|/";  </span>
来简易实现一个顺时针的球(若大家认为实现的不美观,不要见笑,偷笑)。


代码如下:

    #include <stdio.h>      #include "string.h"            int main()      {          int i=0;          char move[5]="-\\|/";          char arr[101];         memset(arr,'\0',sizeof(arr)/sizeof(arr[0]));          while(i<100)          {              arr[i]= '=';              printf("[%-100s] %d %% %c",rate,i+1,move[i%4]);              printf("\r");              usleep(100000);              fflush(stdout);      i++;        }          printf("\n");                    return 0;      } 

大家可以在自己的机器平台上运行看一下动态效果,由于是动态效果,我在这里呢,只能把最终截图分享给大家。



0 0
原创粉丝点击