各位看官们,大家好,上一回中咱们说的是大小写字符转换的例子,这一回咱们说的例子是:控制终端字符颜色 。闲话休提,言归正转。让我们一起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。字符的显示方式通过转义序列来控制,其含义是:使用加加粗方式显示白底黑字形式的字符串。

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

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

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


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

  1. 一起talk C栗子吧(第一百八十七回:C语言实例--反余弦函数 )

    各位看官们,大家好,上一回中咱们说的是反正弦函数 的例子,这一回咱们说的例子是:反余弦函数 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,反余弦函数是一种数学函数,详细的内容在数学课程 ...

  2. 柏西机器人_第四百六十七章 次元声波_我的手机有外星游戏最新章节

    第四百六十七章 次元声波 "我是星兽一族!"小星兽自豪地说道. 希尔柏西一愣,"星兽?怎么可能!" 作为见多识广的贝硫多拉高层,希尔柏西当然知道星兽一族的情况, ...

  3. 美学心得(第一百九十七集) 罗国正

    美学心得(第一百九十七集) 罗国正 (2019年2月) 2681.马斯洛提出的最高境界是"自我实现",换一个角度来理解.表述,即"自渡":而优秀的公益人物,他们 ...

  4. 不朽凡人 第一百六十二章 哪里来的外门弟子

    雷炼室的雷弧再次落下,莫无忌只能引导雷弧去轰击第一百零一条脉络.和第一百条脉络一摸一样,引导雷弧冲击堵塞的脉络,只能让他徒增痛楚而已,不能让堵塞的脉络有半分松动. 莫无忌索性将所有的开脉药液全部喝下, ...

  5. 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)

    各位看官们,大家好,上一回中咱们说的是多线程的样例.这一回咱们说的样例是:显示变量和函数的地址. 闲话休提,言归正转.让我们一起talk C栗子吧! 在编敲代码时,有时候须要获取程序中变量和函数的地址 ...

  6. 一起talk C栗子吧(第一百九十三回:C语言实例--DIY less命令二 )

    各位看官们,大家好,上一回中咱们说的是DIY less命令的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,看了上一回的内容,相信大家意犹未尽,我们趁热打铁, ...

  7. 第一百六十三天 how can I 坚持

    加了多半天班,然后,去给源二搬家了,好累. 睡觉. 转载于:https://www.cnblogs.com/52-it/p/4803877.html

  8. 第一百三十七期:一个简单的小案例带你理解MySQL中的事务

    事务又叫做TCL,全称是transaction control language,意思是事务控制语言. 作者:Java的架构师技术栈 事务又叫做TCL,全称是transaction control l ...

  9. android handler的机制和原理_第一百八十回:Android中的Handler机制九

    各位看官们大家好,上一回中咱们说的是Android中Handler机制的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起Talk Android吧! 看官们,由于时间的原因我们在上一回中只 ...

最新文章

  1. Android逆向--如何调试smali代码?
  2. python开发好学吗-python难学吗
  3. Spring的依赖注入和管理Bean
  4. MSC Apex 2020中文版
  5. 教你成为全栈工程师(Full Stack Developer) 〇-什么是全栈工程师
  6. 【Qt】2D绘图之绘制路径
  7. 教你用纯Java实现一个即时通讯系统(附源码)
  8. 我的世界服务器的交易系统,我的世界村民交易系统详解_我的世界交易系统介绍_牛游戏网...
  9. 在linux下安装Avria(小红伞)
  10. catia中的螺旋伞齿轮画法_使用CATIA绘制斜齿轮(直齿轮)得画法教程.doc
  11. 贴片电阻电容标称换算
  12. 监督管理计算机系统的安全保,网络信息安全知识:监督管理计算机信息系统安全保护工作应由()完成。...
  13. Flutter Text控件在不同手机上不居中的问题
  14. 数据透视:Excel数据透视和Python数据透视
  15. bzoj 1646 bfs
  16. 如何设置potplayer播放器把人声凸显出来并降噪?
  17. Go 语言入门三部曲(一):能看懂 Go 语言
  18. 人死了以后往哪儿去了?
  19. 文化|智链万源凝心聚力,遇见更卓越的你!
  20. 自动化测试面试题快收藏,弄懂月薪增加1w

热门文章

  1. mysql 进制转换函数_SQL Server 进制转换函数
  2. Linux虚拟机中安装虚拟机----套娃
  3. 基于skyline的城市三维建模研究(转)
  4. 国外接活网站Elance, Freelancer和ScriptLance的介绍和对比
  5. C++ gstreamer函数使用总结
  6. jmail设置端口php,php 做出类似jmail的效果
  7. 记一次tomcat漏洞修复补丁升级
  8. 斯坦福博士李纪为成立 AI 金融公司香侬科技,获红杉中国数千万天使投资
  9. available 的理解和一些使用
  10. 身份证验证接口API(仅需一行代码,公安部实时接口)