当我们加载一些东西或者下载文件的时候就会出现一个叫进度条的东西
下面我们就来看看如何实现进度条
首先我们要知道,进度条里面是有字符的,就像一个数组一样,我们每次打印数组里面一个元素,不换行,当打印出来一百个的时候我们就可以打印结束,进度条就满了。那么具体如何实现呢,请看下面的代码:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int i=0;
char buf[102]="#";
for(;i<100;i++)
{
buf[i]='#';
printf("[%s]\r",buf);
fflush(stdout);
usleep(100000);
}
printf("\n");
}
我们%s后面的 \r 是为了一直在一行里显示,我们的fflush 就是为了刷新数据让它又重新输出下一个数组元素,而usleep就是为了给我们规定一个显示间隙。但是这样的进度条是存在缺陷的。
打印出来我们可以看到:
现在我们可以看到就是一堆字符的显示,但是我们平时看到的进度条人家都是有百分之进度的,而且在百分进度后面还有一个显示符号在转圈,说明正在加载中 ,是不是很有意思,接下来我们看看如何变成想要的那样:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int i=0;
char buf[102]="#";
char sym[]="|/-\\";
for(;i<=100;i++)
{
buf[i]='#';
printf("[%-100s][%d%%][%c]\r",buf,i,sym[i%4]);
fflush(stdout);
usleep(100000);
}
printf("\n");
}
这样我们就可以看见
这样我们就实现了进度条的模拟实现!nice