C语言进度条的实现
- buff[N]:进度条状态字符串,N大小决定进度条长度(自行调整),使用前先将所有字符初始化置零,我这里使用的是memset函数;
- label[]:动态标签字符数组,每次循环对4取余可得到0~3的余数,以此作为数组下标,可以实现 \ 和 / 这两字符的不断切换打印;
- for循环要保证最后一次打印的进度为100%
- printf打印中的%-39s,‘-’是左对齐的输出39个字节,后面不足的空格补齐;这里还要注意\r表示回车,但并不是换行,意思是每次刷新从本行开头重新打印。
- fflush(stdout):先将缓冲区已有的内容打印,刷新缓冲区,否则的话printf会等待usleep()结束后才打印内容。
代码实现:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
void progressBar(){
char buff[40];
memset(buff,'\0',40);
char label[] = "\\/\\/";
for(int i = 0;i < 40;i++){
printf("[%-39s][%c][%.1f%%]\r",buff,label[i%4],(i+1)*2.5);
fflush(stdout);
buff[i] = '>';
usleep(100000);
}
putchar('\n');
}
int main(){
progressBar();
return 0;
}
Ubuntu终端测试结果:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)