【Linux】彩色进度条的实现,Linux小程序

来源:互联网 发布:java lastindexof 编辑:程序博客网 时间:2024/05/29 16:45

目录

  • 普通版进度条的实现
    • 在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%时是红色,后面变成绿色:

这里写图片描述