> 技术文档 > C 语 言 终 端 炫 彩 魔 术 手:从 8 色 到 24 位 真 彩 全 解 锁,ANSI 转 义 序 列 神 级 秘 籍 让 你 的 输 出 亮 瞎 屏 幕!_ansi终端转义颜色代码

C 语 言 终 端 炫 彩 魔 术 手:从 8 色 到 24 位 真 彩 全 解 锁,ANSI 转 义 序 列 神 级 秘 籍 让 你 的 输 出 亮 瞎 屏 幕!_ansi终端转义颜色代码


文 章 目 录

  • 一、基 本 格 式
  • 二、文 本 颜 色(前 景 色)
  • 三、背 景 颜 色
  • 四、文 本 样 式 参 数
  • 五、24 位 真 彩 色(RGB)
  • 六、系 统 兼 容 性
    • 1、Linux/macOS
    • 2、Windows
  • 七、完 整 代 码 示 例 及 注 意 事 项
    • 1、示 例 代 码
    • 2、注 意 事 项

C 语 言 终 端 炫 彩 魔 术 手:从 8 色 到 24 位 真 彩 全 解 锁,ANSI 转 义 序 列 神 级 秘 籍 让 你 的 输 出 亮 瞎 屏 幕!_ansi终端转义颜色代码

         在 C 语 言 中,通 过 ANSI 转 义 序 列 可 以 实 现 终 端 的 彩 色 输 出(包 括 文 本 颜 色、背 景 色、文 本 样 式 等),适 用 于 支 持 ANSI 标 准 的 终 端(如 Linux/macOS 终 端、Windows 10 + 命 令 提 示 符 / PowerShell)。


一、基 本 格 式

ANSI 转 义 序 列 的 格 式 为:

\\033[参数1;参数2;...m
  1. 多 个 参 数 用 分 号 分 隔,用 于 同 时 设 置 颜 色、背 景、样 式 等。
  2. 结 束 样 式 / 颜 色 需 用 \\033[0m 重 置(否 则 后 续 输 出 会 继 承 样 式)。

二、文 本 颜 色(前 景 色)

8/16 色 基 础 前 景 色(普 通 + 亮 色)

类型 普通前景色 亮前景色 黑色 30 90 红色 31 91 绿色 32 92 黄色 33 93 蓝色 34 94 紫色 35 95 青色 36 96 白色 37 97

三、背 景 颜 色

8/16 色 基 础 背 景 色(普 通 + 亮 色)

类型 普通背景色 亮背景色 黑色 40 100 红色 41 101 绿色 42 102 黄色 43 103 蓝色 44 104 紫色 45 105 青色 46 106 白色 47 107

四、文 本 样 式 参 数

参数 含义 参数 含义 0 重置所有样式 / 颜色 22 取消加粗 / 弱化 1 加粗(bright/bold) 23 取消斜体 2 弱化(淡色) 24 取消下划线 3 斜体 25 取消闪烁 4 下划线(单条) 27 取消反显 5 闪烁(慢速) 28 取消隐藏 6 闪烁(快速,少用) 29 取消删除线 7 反显(前景 / 背景互换) 8 隐藏(不可见) 9 删除线

五、24 位 真 彩 色(RGB)

如 果 终 端 支 持 24 位 颜 色(现 代 终 端 如 iTerm2、Windows Terminal 等),可 以 用 RGB 值 精 确 指 定 颜 色:

  1. 前 景 色\\033[38;2;R;G;Bm(R、G、B 为 0 - 255 的 数 值)
  2. 背 景 色\\033[48;2;R;G;Bm

六、系 统 兼 容 性

1、Linux/macOS

绝 大 多 数 终 端 默 认 支 持 ANSI 序 列。

2、Windows

  1. Windows 10 及 以 上 的 命 令 提 示 符 / PowerShell 需 先 开 启 “虚 拟 终 端 处 理”(可 通 过 代 码 启 用,见 下 方 示 例)。

  2. 旧 版 Windows(如 Win7)默 认 不 支 持,需 借 助 第 三 方 终 端(如 Cmder)。

七、完 整 代 码 示 例 及 注 意 事 项

1、示 例 代 码

vs2022

#include <stdio.h>#ifdef _WIN32#include <windows.h> //Windows启用ANSI支持#endif//Windows开启ANSI转义序列支持(Win10+)void enable_ansi() {#ifdef _WIN32 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); DWORD mode; GetConsoleMode(hOut, &mode); mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; SetConsoleMode(hOut, mode);#endif}int main() { enable_ansi(); //仅Windows需要 //基础前景色+背景色 printf(\"普通红色文本:\\033[31m红色\\033[0m\\n\"); printf(\"绿色背景+黄色文本:\\033[42;33m绿底黄字\\033[0m\\n\"); printf(\"亮蓝色文本:\\033[94m亮蓝\\033[0m\\n\"); printf(\"亮紫色背景:\\033[105m亮紫底\\033[0m\\n\\n\"); //文本样式 printf(\"加粗:\\033[1m加粗文本\\033[0m\\n\"); printf(\"斜体:\\033[3m斜体文本\\033[0m\\n\"); printf(\"下划线:\\033[4m下划线文本\\033[0m\\n\"); printf(\"反显:\\033[7m反显文本\\033[0m\\n\"); printf(\"闪烁(部分终端支持):\\033[5m闪烁文本\\033[0m\\n\\n\"); //24位真彩色 printf(\"24位红色前景:\\033[38;2;255;0;0mRGB红色\\033[0m\\n\"); printf(\"24位蓝色背景:\\033[48;2;0;0;255m蓝底文本\\033[0m\\n\"); printf(\"混合:\\033[1;38;2;0;255;0;48;2;255;255;0m加粗绿字黄底\\033[0m\\n\"); return 0;}

C 语 言 终 端 炫 彩 魔 术 手:从 8 色 到 24 位 真 彩 全 解 锁,ANSI 转 义 序 列 神 级 秘 籍 让 你 的 输 出 亮 瞎 屏 幕!_ansi终端转义颜色代码

2、注 意 事 项

  1. 务 必 用 \\033[0m 重 置 样 式,否 则 后 续 输 出 会 持 续 生 效。
  2. 部 分 终 端 对 某 些 样 式(如 斜 体、闪 烁)支 持 有 限,建 议 实 际 测 试。
  3. 24 位 真 彩 色 需 终 端 支 持(可 通 过 echo -e \"\\033[38;2;255;0;0mTest\\033[0m \" 测 试)。

C 语 言 终 端 炫 彩 魔 术 手:从 8 色 到 24 位 真 彩 全 解 锁,ANSI 转 义 序 列 神 级 秘 籍 让 你 的 输 出 亮 瞎 屏 幕!_ansi终端转义颜色代码