程序员人生 网站导航

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

栏目:php教程时间:2016-08-01 17:21:14

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


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

这里写图片描述

那末如何让我们自己写的程序也产生这些5颜6色的字体呢?我们可以通过printf()函数的格式化序列进行控制。我们看1下printf()的函数原型:

int printf(const char *format, ...);

该函数的参数数量是可变的,不管再怎样变,它的第1个参数就是格式化序列,它用来控制输出内容的格式。在该格式化序列中,有1些特殊功能需要借助转义序列来实现,最经常使用的转义序列是“\n",它表示输出换行符。这个地球人都知道的功能,我就不举例子了,如果真有哪位看官不知道,那末我到想看看这位外星人长的甚么样子。台下看官们都在相互看对方,好像对方就是外星人似的,哈哈。

好了,大家别看外星人了,我们还是1起来看看转义序列吧,这次我们看的是控制终端中文字色彩的转义序列”\033“,这是1个8进制序列,转换为字符后是ESC,由于它不像"\n"1样只有1个字符,所以我们常常用它的8进制情势,详细的使用格式为:

\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(白色)

关于这些数字我做1点说明:

  • 每一个数字后面都有1个括号,括号中的内容表示该数值对字符的控制情势。比如字符的色彩这1项中,31(红色)表示使用红色来显示字符,我们会在终端中看到printf输出红色的字符。
  • 在字符的显示方式中没有数值5、6和8。由于这几个数值控制的显示方式和默许的显示方式10分类似,所以我没有单独来讲明它们代表的显示方式。
  • 字符的色彩及其背景色彩都是从数值x0到x7,只不过这个x的数值1个是3,另外1个是4。数值x7以后的数值没有特别的意义。

接下来我们看个例子:

printf("\033[1;30;47m hello word \033[m \n");

该例子表示在终端中输出字符串:hello word。字符的显示方式通过转义序列来控制,其含义是:使用加加粗方式显示白底黑字情势的字符串。

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

这里写图片描述

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

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


------分隔线----------------------------

上一篇 Linux笔记

下一篇 MongoDB实用教程

------分隔线----------------------------

最新技术推荐