讲师博文
Linux下printf输出字符串的颜色 来源 : 未知     2018-09-21

基本打印格式:

printf("\033[字背景颜色;字体颜色m字符串\033[0m" );

printf("\033[41;32m字体背景是红色,字是绿色\033[0m\n");

41是字背景颜色, 32是字体的颜色, 字体背景是红色,字是绿色是要输出的字符串. 后面的\033 ...\033[0m是配对的为控制码。

先来说一下颜色和背景的代码

颜色代码:

QUOTE:

字背景颜色范围: 40--49 字颜色: 30--39

40: 黑 30: 黑

41: 红 31: 红

42: 绿 32: 绿

43: 黄 33: 黄

44: 蓝 34: 蓝

45: 紫 35: 紫

46: 深绿 36: 深绿

47: 白色 37: 白色

注意到总体范围是从30到49,在printf("\033[41;32m字体背景是红色,字是绿色\033[0m\n");中\033[41;32m是可以单独只指定背景颜色或者字体颜色的,这样另外的部分就是默认状态如\033[32m 表示字体是绿色背景默认而\033[41m 表示背景为红色字体默认。

在“字体背景是红色,字是绿色”这一部分可以是要输出的字符串,也可以是格式控制串包含格式控制符如printf("\033[41;32m%2d\033[0m\n",a);则会输出int型的a,背景占2字符为红色,字体为绿色。

我们再说一下控制码,不同的控制码会产生不同的效果,这些属性可以写在后面,也可以加载前面如printf("\033[0m\033[41;32m%2d\n",a);也是可以的,不同在于是先打印再添加属性还是先添加属性再打印还是先打印再添加属性。当然一次也可以添加多个属性,总体原则是格式为:\33[ + 属性代码 随你喜好开心就好。

Linux下printf输出字符串的颜色

ANSI控制码:

QUOTE:

\033[0m 关闭所有属性这个关闭的属性是指的之前通过ANSI控制码获得的属性,这些属性得后遇到\033[0m会关闭。

\033[1m 设置高亮度 (光标过出均变为背景色)

\03[4m 下划线

\033[5m 闪烁

\033[7m 反显

\033[8m 消隐

\033[30m -- \033[37m 设置前景色

\033[40m -- \033[47m 设置背景色

\033[nA 光标上移n行

\03[nB 光标下移n行

\033[nC 光标右移n行

\033[nD 光标左移n行

\033[y;xH设置光标位置

\033[2J 清屏

\033[K 清除从光标到行尾的内容

\033[s 保存光标位置

\033[u 恢复光标位置

\033[?25l 隐藏光标

\33[?25h 显示光标

在说一下,其实这些属性信息中的相关数字也是可以通过变量的传入传进去的例如:

for (x = p_x + 36, y = p_y + 1; y <= 25; y++)

printf("\33[%d;%dH\33[41m==\33[0m", y, x);

这里光标的卫士就是通过变量传入的,==是打印内容,颜色也是这样,我们可以建立随机传入。这样, 在某些时候就可以实现动态的输出,或者打印一些图案。

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:关于Linux内核中的异步IO的使用

下一篇:函数tmpnam和tmpfile的用法

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号