您的位置:首页 > 运维架构 > Linux

Linux彩色进度条和普通进度条

2017-12-08 13:10 176 查看

普通进度条

第一步:创建一个名为process_bar的文件夹



第二步:

输入:vim makefile



在makefile里输入以下代码:

process_bar:process_bar.o
gcc process_bar.o -o process_bar//前面是一个水平制表符的距离,即输入一个Tab

.PHONY:clean
clean://一定要顶头写
rm process_bar.i process_bar.s process_bar.o process//前面是一个水平制表符的距离,即输入一个Tab


如下图:



第三步:

在命令行输入:vim process.c



在process.c 里输入下面的代码

#include<stdio.h>
#include<unistd.h>
int main()
{
char buf[100] = { 0 };
size_t i = 0;
const char*label = "-/\\|";
for (; i <= 50; ++i)
{
buf[i] = '*';
printf("[%lu%%][%c][%-50s]\r", i * 2, label[i % 4], buf);
fflush(stdout);//刷新缓冲区
usleep(100000);//单位是毫秒
//sleep(1)单位是秒
}
printf("\n");
return 0;
}


第四步:编译代码并输出结果

输入1:  gcc process.c
//这条命令执行完之后,会生成一个可执行文件:./a.out
输入2:  ./a.out




ls:是查看有没有生成可执行文件--->a.out


运行结果:



彩色进度条

linux下如何使字体变色?

在linux下定义字体变色是有他自己的格式的

格式:
printf("\e[X;Ym%s\e[0m","要输出的字符串);


\e[X;Ym :定义你要输出颜色的格式,打开某种属性

X--->是背景色,就是需要输出的字体的背景颜色,常用一个编号表示
Y--->是字体颜色,常用一个编号表示


常见的背景色编号:
40--->黑色
41--->深红色
42--->绿色
43--->黄色
44--->蓝色
45--->紫色
46--->深绿色
常见的字体颜色编号:
31--->红色
32--->绿色
33--->黄色
34--->蓝色
35--->紫色
36--->深绿色
37--->白色


\e[0m
是结束标志,结束某种样式。表示此种颜色标记的字体结束,如果没有这个结束标志,后面的字体都会是这个颜色


注意:
\e与\033功能一样,即就是写\e还是写\033都一样
例如:\e[41;32m%s\e[0m  与  \033[41;32m%s\e[0m 功能相同


例如:实现字体变色

代码:

#include<stdio.h>
int main()
{
printf("\e[32m%s\e[0m\n","hello  world");//没有加背景色
printf("\e[45;34m%s\e[0m\n","hello  world");//加了背景色
return 0;
}


运行结果:



彩色进度条的实现

第一步:创建一个名为process_bar的文件夹



第二步:

输入:vim makefile



在makefile里输入以下代码:

process_bar:process_bar.o
gcc process_bar.o -o process_bar//前面是一个水平制表符的距离,即输入一个Tab

.PHONY:clean
clean://一定要顶头写
rm process_bar.i process_bar.s process_bar.o process//前面是一个水平制表符的距离,即输入一个Tab


如下图:



第三步:

在命令行输入:vim process_bar.c



在process_bar.c里输入以下代码:

#include<stdio.h>
#include<unistd.h>
int main()
{
char buf[100] = { 0 };
const char*label = "-\\/|";//模拟转圈
size_t i = 0;
for (; i <= 50; ++i)
{
buf[i] = '*';
if (i <= 20)
printf("\e[32m[%lu%%]\e[0m\e[33m[%c]\e[0m\e[34m[%-50s]\e[0m\r", i * 2, label[i % 4], buf);

/* \e[32m[%lu%%]\e[0m:是i*2的格式,%lu是无符号长整型整数,%%:可以使得输出的整数带上% */
/* \e[33m[%c]\e[0m:是label[i%4]的格式 */
/* \e[34m[%-50s]\e[0m:是buf的格式,buf是一个字符串,-50是输出的总长度是50个空格,如果没有把此空格填写完,会在右边留出多余的空间 */

else
printf("\e[32m[%lu%%]\e[0m\e[33m[%c]\e[0m\e[35m[%-50s]\e[0m\r", i * 2, label[i % 4], buf);
// \r是回到行首
fflush(stdout);
usleep(100000);
}
printf("\n");
return 0;
}


第四步:编译代码并输出结果

编译代码:

输入1:  gcc process_bar.c
//这条命令执行完之后,会生成一个可执行文件:./a.out
输入2:  ./a.out




运行结果:

颜色变化:

先是蓝色



再是紫色



如果想要查看动态的结果,可自行调试哦!(颜色变化:蓝–>紫)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: