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

来源:互联网 发布:数据中心网络架构 编辑:程序博客网 时间:2024/05/29 02:56

普通进度条

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

这里写图片描述

第二步:
输入:vim makefile

这里写图片描述

在makefile里输入以下代码:

process_bar:process_bar.o    gcc process_bar.o -o process_bar//前面是一个水平制表符的距离,即输入一个Tab .PHONY:cleanclean://一定要顶头写    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:cleanclean://一定要顶头写    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

这里写图片描述

运行结果:

颜色变化:
先是蓝色
这里写图片描述
再是紫色
这里写图片描述

如果想要查看动态的结果,可自行调试哦!(颜色变化:蓝–>紫)

原创粉丝点击