一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)
各位看官们,大家好,上一回中咱们说的是大小写字符转换的例子,这一回咱们说的例子是:控制终端字符颜色 。闲话休提,言归正转。让我们一起talk c栗子吧!
看官们,我们在linux终端中使用linux命令时,会出现各种颜色的文字,最常见的是ls命令。下面是运行ls -al命令后的屏幕截图,大家从图中可以看到各种颜色的字体:
那么如何让我们自己写的程序也产生这些五颜六色的字体呢?我们可以通过printf()函数的格式化序列进行控制。我们看一下printf()的函数原型:
int printf(const char *format, ...);
该函数的参数数量是可变的,不管再怎么变,它的第一个参数就是格式化序列,它用来控制输出内容的格式。在该格式化序列中,有一些特殊功能需要借助转义序列来实现,最常用的转义序列是“\n"
,它表示输出换行符。这个地球人都知道的功能,我就不举例子了,如果真有哪位看官不知道,那么我到想看看这位外星人长的什么模样。台下看官们都在相互看对方,好像对方就是外星人似的,哈哈。
好了,大家别看外星人了,我们还是一起来看看转义序列吧,这次我们看的是控制终端中文字颜色的转义序列”\033“
,这是一个八进制序列,转换为字符后是esc,因为它不像"\n"
一样只有一个字符,所以我们经常用它的八进制形式,详细的使用格式为:
\033[字符的显示方式;字符的颜色;字符的背景颜色m 需要显示的字符 \033[m
其中字符的显示方式、字符的颜色和字符的背景颜色都用数字来表示,不同的数字代表不同的意思,各个数字代表的含义如下:
字符的显示方式:0(默认值)、1(加粗)、2(灰显)、3(斜体)、4(下划线)、7(反显)、9(删除线) 字符的颜色:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(深蓝色)、35(紫色)、36(浅蓝色)、37(白色) 字符的背景颜色:40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(紫色)、46(浅蓝色)、47(白色)关于这些数字我做一点说明:
每个数字后面都有一个括号,括号中的内容表示该数值对字符的控制形式。比如字符的颜色这一项中,31(红色)表示使用红色来显示字符,我们会在终端中看到printf输出红色的字符。 在字符的显示方式中没有数值5、6和8。因为这几个数值控制的显示方式和默认的显示方式十分类似,所以我没有单独来说明它们代表的显示方式。 字符的颜色及其背景颜色都是从数值x0到x7,只不过这个x的数值一个是3,另外一个是4。数值x7以后的数值没有特别的意义。接下来我们看个例子:
printf("\033[1;30;47m hello word \033[m \n");
该例子表示在终端中输出字符串:hello word
。字符的显示方式通过转义序列来控制,其含义是:使用加加粗方式显示白底黑字形式的字符串。
看官们,下面是程序的运行结果,该结果中除了包含我们例子中代码的运行结果外,还有其它形式的显示方式,请大家参考:
看官们,在例子中为了显示更加清楚一些,我们都使用加粗方式来显示字符,完整的代码放到了我的资源中,大家可以下载使用。
各位看官,关于控制终端字符颜色的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解
上一篇: 老娘跟你没完
下一篇: 二叉排序树(BST)的思路及C语言实现
推荐阅读
-
一起talk C栗子吧(第一百八十四回:C语言实例--在printf函数中设置输出宽度三)
-
一起talk C栗子吧(第一百九十六回:C语言实例--DIY less命令五 )
-
一起talk C栗子吧(第一百六十二回:C语言实例--套接字知识体系图)
-
一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)
-
一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)
-
一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)
-
一起talk C栗子吧(第一百三十八回:C语言实例--文件操作:基于文件描述符一)
-
一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
-
一起talk C栗子吧(第一百四十二回:C语言实例--文件操作:基于文件指针二)
-
一起talk C栗子吧(第一百六十回:C语言实例--套接字通信模型二)