目录
- 普通版进度条的实现
- 在process目录下创建process.c C程序文件
- 创建makefile文件,该文件实现编译process.c C代码的功能
- 彩色进度条的实现
- Linux下输出彩色字符
- 修改普通版的process.c 程序
一、普通版进度条的实现
1.1 创建该程序的专有目录
①首先通过mkdir process ,创建process目录;
②cd process ,进入process目录下;
③vim process.c ,创建C程序并进入开始编写程序;
④普通版进度条的C语言实现代码:
#include<stdio.h>
#include<unistd.h>
int main(){
char buf[101] = {0};//用buf存放要输出的进度条
size_t i = 0;
const char* label = "-/|\\";
for(;i<50;++i){
buf[i] = '#';
printf("[%lu%%][%c][%-50s]\r",i*2,label[i%4],buf);
/*[%lu%%]->i*2,因为I最大为50,这里是以百分制的形式输出进度
const char* label = "-/|\\"; + [%c] + label[i%4]
这几句的意思是随着循环的进行,依次输出label所指字符串的单个字符,因为是以[%c]形式输出,
所以它只占一个字符位,最终会形成一个不断旋转的横线(借助时间间隔比较小形成的这种错觉)*/
fflush(stdout);
/*fflush(stdout)是对标准输出流的清理,及时地打印数据到屏幕上,在这里就是不间断的输出buf*/
usleep(100000);
}
printf("\n");
return 0;
}
1.2 创建makefile文件,该文件实现编译process.c C代码的功能
①在process目录下创建makefile文件,vim makefile;
②在makefile文件下输入代码,如图所示:
③在终端输入 make ,这时会生成一个可执行程序 process,再输入./process , 就会执行该程序。
2、彩色进度条的实现
2.1 Linux下输出彩色字符
①控制码如下所示:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m----\33[37m 设置前景色
\033[40m----\33[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH 设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
② 背景色:
40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色
③ 前景色:
30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色
④ 格式:
printf("\033[背景色码;字体色码m"要输出的字符串"\033[0m");
printf("\e[背景色码;字体色码m%s\e[0m","要输出的字符串");
【说明】:控制字符是打开某种样式,输出完成时需要再关闭样式才能使terminal恢复到原来状态,\033和\e的作用相同。
【例】:
printf("\e[32m%s\e[0m\n", "hello world");
\e[32m为打开绿色前景色样式,\e[0m为关闭所有样式,如果未关闭,则所有输出字体均为绿色前景色。
2.2 修改普通版的process.c 程序
【程序如下图所示】:
【程序运行结果】:
进度条在前50%时是红色,后面变成绿色: