ANSI颜色字体一篇通

ANSI 以及颜色编码

ANSI 是一种字符编码, 其扩展了ASCII 编码。
ANSI 可以实现在终端输出带有颜色的字体,这里的终端有很多,典型的就是Linux 的命名终端,另外Eclipse在安装插件之后也可以显示颜色字体。
注意: Windows 系统不直接支持颜色字体,通过一下两种方式可以使用:

  1. cygwin : 在Windows 上运行Unix的模拟系统
  2. MinGW : 将编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS。也就是GCC的Windows 版本。

##ANSI颜色码的使用
ANSI 的使用场景有:

  • Linux 终端的颜色字体显示。这样看起来清晰多了。比如 文件夹和文件的颜色不一样。
  • 开发IDE 对颜色字体的支持。 比如Eclipse在控制台输出的时候, 错误信息以红色字体显示。

Linux系统中快速演示ANSI 颜色字体

进入Linux 终端, 如果是从Windows连接Unix,可以使用 Putty, 在控制台输入 :
echo -e "\033[32m hello \033[0m"

  • echo 命令后面加 -e参数选项是激活转义字符。如果不加的话就会原样输出。
  • \033[ 控制码开始标志
  • 32 绿色
  • m 控制字符
  • \033[0m 恢复默认颜色。 因为默认颜色的编码是39 , 所以也可以使用 \033[39m 。 默认是白色, 如果不恢复,则控制台的颜色会改变。

ANSI 控制码

ANSI 控制码以Esc 作为控制码的开始标志。 Esc的ANS十进制码是 27 , 八进制码是33, 使用\33 表示。主要的控制码有:

  • \033[0m 关闭所有属性
  • \033[1m 设置高亮度
  • \033[4m 下划线
  • \033[5m 闪烁 , 测试在在linux 显示效果是底色。
  • \033[7m 反显
  • \033[8m 消隐
  • \033[nA 光标上移n行
  • \033[nB 光标下移n行
  • \033[nC 光标右移n行
  • \033[nD 光标左移n行
  • \033[y;xH 设置光标位置
  • \033[2J 清屏
  • \033[K 清除从光标到行尾的内容
  • \033[s 保存光标位置
  • \033[u 恢复光标位置
  • \033[?25l 隐藏光标
  • \033[?25h 显示光标
  • \033[30m ~ \033[37m 设置前景色
  • \033[40m ~ \033[47m 设置背景色

常用颜色码

字体: 30-39
字体背景:40-49
字体颜色和背景颜色的个位数对应的颜色是相同的。

  • 39 默认颜色
  • 30 黑色
  • 31 红色
  • 32 绿色
  • 33 黄色
  • 34 蓝色
  • 35 紫色
  • 36 青色
  • 37 白色


<think>好的,用户想写一篇关于printf带颜色打印的微经验,我需要详细解释如何在终端中使用ANSI转义码来实现彩色输出。首先,得明确基本语法结构,比如转义序列的组成,前景色和背景色的代码范围。然后,要列出常用颜色代码,方便用户快速查阅。接着,示范几个具体的例子,比如改变字体颜色、背景色,以及组合使用的效果。可能用户还会需要知道如何重置样式,避免后续输出也被影响。还要提醒用户注意兼容性问题,不同终端可能支持程度不同,建议先测试。最后,可以补充一些高级用法,比如加粗、下划线等属性,让内容更全面。确保使用中文,结构清晰,分步骤讲解,帮助用户一步步掌握。</think>以下为分步骤的printf颜色打印使用指南,包含语法说明和代码示例: # 终端彩色打印ANSI转义码使用指南 ## ▍基础语法结构 ```c printf("\033[属性代码;前景色;背景色m 你的文本 \033[0m"); ``` - `\033[`:ANSI转义序列开始符 - 多个参数用`;`分隔 - `m`:结束标识符 - `\033[0m`:重置所有样式 ## ▍颜色代码速查表 | 类型 | 颜色 | 前景色 | 背景色 | |----------|--------|--------|--------| | 常规颜色 | 黑色 | 30 | 40 | | | 红色 | 31 | 41 | | | 绿色 | 32 | 42 | | | 黄色 | 33 | 43 | | | 蓝色 | 34 | 44 | | | 品红 | 35 | 45 | | | 青色 | 36 | 46 | | | 白色 | 37 | 47 | ## ▍典型使用示例 ```c // 红色文字 printf("\033[31m错误信息\033[0m\n"); // 绿色背景白色文字 printf("\033[37;42m成功提示\033[0m\n"); // 黄色加粗文字(加粗属性1) printf("\033[1;33m警告内容\033[0m\n"); // 青色闪烁文字(闪烁属性5) printf("\033[5;36m紧急知\033[0m\n"); ``` ## ▍组合属性说明 ```c // 格式:属性1;属性2;...;属性n "\033[1;4;31m" // 红色加粗带下划线 "\033[5;44;37m" // 蓝底白字闪烁 ``` ## ▍高级功能 1. **256色模式**(支持更丰富的颜色) ```c printf("\033[38;5;206m洋红色文字\033[0m"); ``` 2. **RGB真彩色**(部分终端支持) ```c printf("\033[38;2;255;128;0m自定义颜色\033[0m"); ``` ## ⚠️ 注意事项 1. 必须包含`\033[0m`重置样式 2. 不同终端兼容性不同(建议优先使用基础颜色) 3. Windows需启用VT100支持(建议使用Linux/macOS终端测试) ## ▍完整演示代码 ```c #include <stdio.h> int main() { printf("\033[31m红色文字\033[0m\n"); printf("\033[32;44m绿字蓝底\033[0m\n"); printf("\033[1;35m加粗品红\033[0m\n"); printf("\033[4;33m下划线黄色\033[0m\n"); return 0; } ``` 编译运行后可以看到不同颜色的输出效果。建议实际测试不同组合,找到最适合的显示方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值