在Linux下,通过printf函数改变输出字符的颜色。

 在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。

例如下图就可以增加界面的美观性。

	printf(YELLOW"*********************************\n"NONE);
	printf(GREEN"****------------*------------****\n"NONE);
	printf(BLUE"*  1、添加信息     2、查看信息  *\n"NONE);	
	printf(PURPLE"*  3、查找信息     4、删除信息  *\n"NONE);
	printf(LIGHT_BLUE"*  5、修改信息     6、退出菜单  *\n"NONE);
	printf(LIGHT_GREEN"****------------*------------****\n"NONE);
	printf(YELLOW"*********************************\n"NONE);

颜色表

颜色代码:
字背景颜色范围: 40--49      字颜色: 30--39
                40: 黑                           30: 黑
                41: 红                           31: 红
                42: 绿                           32: 绿
                43: 黄                           33: 黄
                44: 蓝                           34: 蓝
                45: 紫                           35: 紫
                46: 深绿                       36: 深绿
                47: 白色                       37: 白色

printf("\033[41;32m字背景颜色红色;字体颜色绿色\033[0m\n");

结果:

终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符'ESC'开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以'ESC'和左括号'['开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通常由'\033['或'\e['代替。

通过转义序列设置终端显示属性时,可采用以下格式:

\033[ Param {;Param;...}m

\e[ Param {;Param;...}m

其中,'\033['或'\e['引导转义序列,'m'表示设置属性并结束转义序列。Param为属性值,{...}表示可选(多个参数之间用分号隔

开,与顺序无关)。

源代码

#define NONE                 "\e[0m"
#define BLACK                "\e[0;30m"
#define L_BLACK              "\e[1;30m"
#define RED                  "\e[0;31m"
#define L_RED                "\e[1;31m"
#define GREEN                "\e[0;32m"
#define L_GREEN              "\e[1;32m"
#define BROWN                "\e[0;33m"
#define YELLOW               "\e[1;33m"
#define BLUE                 "\e[0;34m"
#define L_BLUE               "\e[1;34m"
#define PURPLE               "\e[0;35m"
#define L_PURPLE             "\e[1;35m"
#define CYAN                 "\e[0;36m"
#define L_CYAN               "\e[1;36m"
#define GRAY                 "\e[0;37m"
#define WHITE                "\e[1;37m"

实例(动手体验下用法)

    printf("[%2u]" BLACK "BLACK " L_BLACK "L_BLACK\n" NONE, __LINE__);
    printf("[%2u]" RED "RED " L_RED "L_RED\n" NONE, __LINE__);
    printf("[%2u]" GREEN "GREEN " L_GREEN "L_GREEN\n" NONE, __LINE__);
    printf("[%2u]" BROWN "BROWN " YELLOW "YELLOW\n" NONE, __LINE__);
    printf("[%2u]" BLUE "BLUE " L_BLUE "L_BLUE\n" NONE, __LINE__);
    printf("[%2u]" PURPLE "PURPLE " L_PURPLE "L_PURPLE\n" NONE, __LINE__);
    printf("[%2u]" CYAN "CYAN " L_CYAN "L_CYAN\n" NONE, __LINE__);
    printf("[%2u]" GRAY "GRAY " WHITE "WHITE\n" NONE, __LINE__);

!!!注意点!!!

在你为一行printf输出赋予颜色后,在输出结束后一定要加上NONE即“\e[0m”来清除你为改行赋予的颜色,否则该颜色会一直存在并为后面的行染色。

	printf(YELLOW"*********************************\n"); //此处结尾未加上NONE!
	printf("****------------*------------****\n");
	printf("*  1、添加信息     2、查看信息  *\n");	
	printf("*  3、查找信息     4、删除信息  *\n");
	printf("*  5、修改信息     6、退出菜单  *\n");
	printf("****------------*------------****\n");
	printf("*********************************\n");

猜你喜欢

转载自blog.csdn.net/wow66lfy/article/details/81325379
今日推荐