欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)

程序员文章站 2022-04-09 08:59:25
各位看官们,大家好,上一回中咱们说的是大小写字符转换的例子,这一回咱们说的例子是:控制终端字符颜色 。闲话休提,言归正转。让我们一起talk c栗子吧! 看官们,我们在l...

各位看官们,大家好,上一回中咱们说的是大小写字符转换的例子,这一回咱们说的例子是:控制终端字符颜色 。闲话休提,言归正转。让我们一起talk c栗子吧!


看官们,我们在linux终端中使用linux命令时,会出现各种颜色的文字,最常见的是ls命令。下面是运行ls -al命令后的屏幕截图,大家从图中可以看到各种颜色的字体:

一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)

那么如何让我们自己写的程序也产生这些五颜六色的字体呢?我们可以通过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。字符的显示方式通过转义序列来控制,其含义是:使用加加粗方式显示白底黑字形式的字符串。

看官们,下面是程序的运行结果,该结果中除了包含我们例子中代码的运行结果外,还有其它形式的显示方式,请大家参考:

一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)

看官们,在例子中为了显示更加清楚一些,我们都使用加粗方式来显示字符,完整的代码放到了我的资源中,大家可以下载使用。

各位看官,关于控制终端字符颜色的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解