2.基础版进度条
了解了上面那个倒计时小程序之后,我们先来看一下基础版本的进度条代码该怎么去设计
我们先看一下我完成之后的进度条的样子
首先我们先来完成那个’=‘和’>‘符号的打印
由我们刚才所写的那个倒计时小程序的启发,我们可以这么来设计
至于这个’>‘和这个’='我们在代码里面来控制
1.'='的回车方式的打印
因此我们就可以写出这样的代码
#include "Processbar.h" //VERSION 1 void Process() { char tmp[NUM]={0}; int count=0; while(count<=100) { printf("[%-100s]\r",tmp); fflush(stdout); usleep(50000); tmp[count++]=BODY; if(count<100)//这里我们在count++之后再去修改tmp数组的下一个内容,保证这个进度条的'>'符号始终在最前方 { tmp[count]=HEAD; } } printf("\n"); }
这里这个main.c的头文件写错了,应该是#include “Process.h”
发现成功运行
2.百分比的打印
这个百分比的打印只需要注意一点
printf("[%-100s][%%%d]\r",tmp,count); 这样就可以打印出%数字了
3.状态提示符的打印
我们这么打印状态提示符
于是就可以写出这样的代码
这里我们只需要注意这个不要忘了%4(对4取余)
还有这个’\‘是C语言当中的转义字符,
例如:’\n’就是’n’被转义为了换行符,
我们想要’\‘字符,就需要对这个转义字符再转义一次,就会得到原字符.
而且’\\'这个字符的大小其实是1个字符的大小
然后我们运行一下
发现成功运行
至此,我们的这个基础版本进度条实现结束
下面我们来看一下升级版本的进度条
3.升级版进度条
1.设计:进度条真实情况
2.模拟下载过程的函数download
在这里我们设计了一个模拟下载过程的函数download
我们定义了文件总大小FILE_SIZE,设置了每一次下载的文件的大小one_size,每次下载所需时间50ms(也就是50000微秒),
然后我们就能得出每次下载之后的剩余所需下载大小total,进而也能得到当前下载的进度rate
把所需的头文件包含到Peocessbar.h当中
然后我们的Processbar.c文件也需要修改
在Process函数中,这个表示进度的count就可以直接对rate取整了,这样就不用之前那个版本当中的while(count<=100)了,这也就是进度条真实情况的一种模拟
接下来我们再来看一下这个升级版进度条的样子
其实这两种进度条的样子是一样的,我们所改的是把第一种的while(count<=100)的循环版本改为了真实情况下的进度条的版本
也就是说我们模拟的那个download函数其实省去了process函数当中的usleep函数,并且process函数中的进度改为由download函数提供
这也才是更加让这个进度条代码符合真实情况
以上就是我们的Linux实现进度条小程序(包含基础版本和模拟下载过程版本)的全部内容,希望能对大家有所帮助!