通过printf设置终端输出的颜色

前言

终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。

1.格式

  • 转义序列以控制字符’ESC’开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。
  • 多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符(CSI,Control SequenceIntro),通常由’\033[‘或’\e['代替。
  • 通过转义序列设置终端显示属性时,可采用以下格式:\033[ Param {;Param;…}m 或 \e[ Param {;Param;…}m

2.常用参数

  • 显示方式:0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)

  • 颜色:0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白),前景色为30+颜色值,如31表示前景色为红色;背景色为40+颜色值,如41表示背景色为红色。
    console_codes

  • 通过转义序列设置终端显示属性时,常见格式为:\e[显示方式;前景色;背景色m输出字符串\e[0m,其中’\e[0m’用于恢复默认的终端输出属性,否则会影响后续的输出。

3.具体用法

在我的工程代码中,只使用了对前景色的设置,总共包括5种色彩,对应了系统级错误,严重错误,警告,一般信息,调试信息,冗余信息。
###3.1.定义
#define ms_consolecodes_none “\e[0m”
#define ms_consolecodes_brightred “\e[1;31m”
#define ms_consolecodes_green “\e[0;32m”
#define ms_consolecodes_brightyellow “\e[1;33m”
#define ms_consolecodes_brightblue “\e[1;34m”
#define ms_consolecodes_brightcyan “\e[1;36m”

static const char *ms_col[64]={
ms_consolecodes_brightblue,        //assert
ms_consolecodes_brightred,         //error
ms_consolecodes_brightyellow,      //waring
ms_consolecodes_brightcyan,        //info
ms_consolecodes_none,              //debug
ms_consolecodes_green};            //verbose

###3.2.应用

printf("%s" fmt ms_consolecodes_none "\r\n",ms_col[log_level],##arg );

4.额外补充

通过man命令可查看更多的参数描述,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷咪哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值