Linux下实现彩色进度条

普通进度条的实现:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   char buf[101] = "#";
   char *sign = "|/-\\";//旋转条
   int i;
   for(i=0;i<=100;i++)
   {
      buf[i]='#';
      printf("[%-100s][%d%%][%c]\r",buf,i,sign[i%4]);//左对齐输出并留足100个位置
      fflush(stdout);//每次输出完刷新缓冲区,为下次输出做好准备
      usleep(100000);//每次输出完后使该线程挂起100000微妙,即0.1秒
   }
   return 0;
}

效果图:
这里写图片描述
注意:

  • \n 表示换到下一行,而 \r 表示换到该行起始位置,用后者可以达到效果
  • 以上只能实现一个普通的黑白进度条,那么如何实现一个彩色进度条呢
    终端的字符颜色由转义序列控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符,通常由’\033[‘或’\e[‘代替。

通过转义序列设置终端显示属性时,可采用以下格式:
\033[ Param {;Param;…}m 或 \e[ Param {;Param;…}m
其中,’\033[‘或’\e[‘引导转义序列;’m’表示设置属性并结束转义序列。Param为属性值,{…}表示可选(多个参数之间用分号隔开,与顺序无关)。
printf(“\e[字背景颜色;字体颜色m 字符串 \e[0m”);

字背景颜色的范围:40~49 字颜色范围:30~39
注意:’\033[0m’用于恢复默认的终端输出属性,否则会影响后续的输出。

修改之后的代码如下:
这里写图片描述

效果图:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值