您的位置:首页 > 其它

printf在ANSI兼容终端下显示彩色文本

2011-04-07 20:40 344 查看
在 ANSI 兼容终端(例如 xterm、rxvt、konsole 等)里, 可以用彩色显示文本而不仅仅是黑白。

例: printf("/033[1;40;32m%s/033[0m",” Hello, World/n”);

/033 声明了转义序列的开始,然后是 [ 开始定义颜色。后面的 1 定义了高亮显示字符。然后是背景颜色,这里面是40,表示黑色背景。接着是前景颜色,这里面是32,表示绿色。我们用 /033[0m 关闭转义序列, /033[0m 是终端默认颜色。

下面是对于彩色字符颜色的一些定义:

前景 背景 颜色

---------------------------------------

30 40 黑色

31 41 紅色

32 42 绿色

33 43 黄色

34 44 蓝色

35 45 紫紅色

36 46 青蓝色

37 47 白色

代码 意义

-------------------------

0 终端默认设置

1 高亮显示

4 使用下划线

5 闪烁

7 反白显示

8 不可见

下面是C语言的一个示例,各种背景色和前景色搭配输出字符串

]//filename:tracelog.c
#include <stdio.h>
int main(int argc,char **argv)
{
unsigned char attr[]={0,1,4,5,7,8};
unsigned char fore[]={30,31,32,33,34,35,36,37};
unsigned char back[]={40,41,42,43,44,45,46,47};
int adx,fdx,bdx;
for(bdx=0;bdx <sizeof(back);bdx++)
{
for(fdx=0;fdx <sizeof(fore);fdx++)
{
for(adx=0;adx <sizeof(attr);adx++)
{
printf("/033[%d;%d;%dmhello,NSFocus!!!/033[0m",
attr[adx],fore[fdx],back[bdx]);
printf("<==attr=%d,fore=%d,back=%d/n",
attr[adx],fore[fdx],back[bdx]);
}
}
printf("/n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: