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

普通进度条

第一步:创建一个名为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

如下图:

Linux彩色进度条和普通进度条_第1张图片

第三步:
在命令行输入:vim process.c
这里写图片描述

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

#include
#include
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

Linux彩色进度条和普通进度条_第2张图片

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
 int main()
 {
   printf("\e[32m%s\e[0m\n","hello  world");//没有加背景色
   printf("\e[45;34m%s\e[0m\n","hello  world");//加了背景色
   return 0;
 }

运行结果:

Linux彩色进度条和普通进度条_第3张图片

彩色进度条的实现

第一步:创建一个名为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

如下图:

Linux彩色进度条和普通进度条_第4张图片

第三步:
在命令行输入:vim process_bar.c

这里写图片描述

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

#include
#include
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

Linux彩色进度条和普通进度条_第5张图片

运行结果:

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

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

你可能感兴趣的:(linux)