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

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

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值