您的位置:首页 > 运维架构 > Linux

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

2016-06-04 16:56 330 查看
前言:

在我们平时下载电影或者进入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;
}


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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: