摘要:用C语言编写一个进度条程序,展示进度条读取过程,并有数据显示与加载显示
用C语言编写一个进度条程序,展示进度条读取过程,并有数据显示与加载显示,示例如下:
[lht@VM-12-7-centos linux_-review]$ ./prochar
[====================================================================================================][100%]
#include
#include
int main(){
int nums = 0;
char arr[101] = {0};
const char label[4] = {'-','\\','|','/'};
for(nums = 0; nums < 100; nums++){
if(nums!=0){
arr[nums - 1] = '=';
}
arr[nums] = '>';
fflush(stdout);
printf("[%-100s][%-3d%%] %c\r", arr, nums , label[nums%4]);
usleep(50000);
}
arr[99] = '=';
fflush(stdout);
printf("[%-100s][%-3d%%] \r", arr, nums);
printf("\n");
return 0;
}
- 回车:回到当前行的最开始
- 换行:列不变,另起一行
在编写代码的过程中,如果我们可以尝试将换行进行删除和添加的实验,可能会发现是否输出代码顺序混乱的情况出现。实际上这是因为存在缓冲区的情况,可以成为C语言级别缓冲区,一般情况下,如果没有换行符,输出将会被保存起来,这时就不会对其进行再显示屏幕的输出,知道程序结束为止。
为了解决相关问题,可以使用fflush(stdout)
(头文件为 unistd.h)对缓冲区进行刷新,这样缓冲区的内容就会显示出来了。
可以通过sleep
与usleep
函数(头文件为 unistd.h)进行延时,sleep
单位是秒,usleep
单位是微妙。
在格式化输出的过程中,可以添加数字表示预留空间,可以通过正负号表示输出的方向。
补充:
- 代码将会放到:Linux_Review: Linux博客与代码 (gitee.com) ,欢迎查看!
与代码 (gitee.com)](https://gitee.com/liu-hongtao-1/linux_-review) ,欢迎查看!- 欢迎各位点赞、评论、收藏与关注,大家的支持是我更新的动力,我会继续不断地分享更多的知识!