printf/fprintf 打印颜色

53 篇文章 0 订阅

在调试程序时,有时候要输出大量数据,如果让 printf/fprintf 改变输出数据的颜色,那观察数据就方便多了.
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.

转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27).

\033[显示方式;前景色;背景色m

显示方式:    0(默认值)    1(高亮)        22(非粗体)    4(下划线)    24(非下划线)   5(闪烁)      25(非闪烁)    7(反显)     27(非反显)
前景色:        30(黑色)      31(红色)     32(绿色)       33(黄色)     34(蓝色)         35(洋红)    36(青色)        37(白色)
背景色:        40(黑色)      41(红色)     42(绿色)       43(黄色)     44(蓝色)         45(洋红)    46(青色)        47(白色)

\033[0m              默认
\033[1;32;40m    绿色
\033[1;31;40m    红色

printf("\033[1;31;40m 输出红色字符 \033[0m");

在调试程序时,有时候要输出大量数据,如果颜色都一样的话,辨别起来就很恼火,
如果让 printf/fprintf 改变输出数据的颜色,那观察数据就方便多了.

示例代码:

#include <stdio.h>

#define NONE                      "\033[m"
#define RED                         "\033[0;32;31m"
#define LIGHT_RED           "\033[1;31m"
#define GREEN                   "\033[0;32;32m"
#define LIGHT_GREEN     "\033[1;32m"
#define BLUE                       "\033[0;32;34m"
#define LIGHT_BLUE         "\033[1;34m"
#define DARY_GRAY         "\033[1;30m"
#define CYAN                       "\033[0;36m"
#define LIGHT_CYAN         "\033[1;36m"
#define PURPLE                 "\033[0;35m"
#define LIGHT_PURPLE   "\033[1;35m"
#define BROWN                  "\033[0;33m"
#define YELLOW                 "\033[1;33m"
#define LIGHT_GRAY        "\033[0;37m"
#define WHITE                    "\033[1;37m"

int main()
{
        printf(CYAN "current function is %s " GREEN " file line is %d/n" NONE, __FUNCTION__, __LINE__);
        fprintf(stderr, RED "current function is %s " BLUE " file line is %d/n" NONE, __FUNCTION__, __LINE__);
        return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值