预备知识
1.回车换行
回车换行是两个动作;
回车是将光标移至当前行的最左侧,
换行是将当前光标位置移至下一行的相同位置。
2.缓冲区
由c语言维护的一段内存
1.stdout:标准输出
2.stdin :标准输入
3.stderr:标准错误
linux系统中,一般是缓冲区满或者程序运行结束后进行刷新,这样达不到我们想要的效果,于是我们用fflush清空缓冲区,强制刷新。
准备工作
1.创建三个文件
2.在processBar.h 和 main.c 中写入以下内容
3.创建makefile文件,将上述processBar.c和main.c两个文件一次编译形成可执行文件
代码实现
1.processBar.h代码编写
1 #pragma once //防止头文件重复包含
2 #include<stdio.h>
3 #define BODY '-' //设置进度条的身体样式
4 #define RIGHT '>' //设置进度条的头部样式
5 #define NUM 102
6 #define TOP 100 //设置倒计时时长
7 void processbar(int speed); //声明进度条函数
2.main.c代码编写
1 #include "processBar.h"
2 int main()
3 {
4 processbar(50000); //调用倒计时函数
5 return 0;
6 }
3. processBar.c代码编写
#include "processBar.h"
#include <string.h>
#include <unistd.h>
//设置进度条的颜色
#define YELLOW "\033[1;33m"
#define NONE "\033[m"
//设置进度条旁边的转动圈
char *lable="|/-\\";
void processbar(int speed)
{
char bar[NUM];
memset(bar,'\0',sizeof(bar));
int cnt=0;
int len=strlen(lable);
while(cnt<=TOP)
{
printf("["YELLOW"%-100s"NONE"]""[%d%%][%c]\r",bar,cnt,lable[cnt%len]);
fflush(stdout); //强制刷新
bar[cnt++]=BODY;
if(cnt<100) bar[cnt]=RIGHT;
usleep(speed); // sleep(1) 这边采用毫秒为单位快一点
}
printf("\n");
}
结果展示
文章来源:https://www.toymoban.com/news/detail-687591.html
文章来源地址https://www.toymoban.com/news/detail-687591.html
到了这里,关于Linux 小程序-进度条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!