# ANSI转义字符归纳表 ## 在代码中检测是否支持ANSI C `#if __STDC__ == 1` --- ## **文本样式控制** | 转义码 | 效果 | 说明 | |---------------|--------------------|--------------------------| | `\033[0m` | 重置所有样式 | 关闭所有颜色和特效 | | `\033[1m` | 加粗/高亮 | | | `\033[2m` | 暗淡(弱化) | 部分终端不支持 | | `\033[3m` | 斜体 | 部分终端不支持 | | `\033[4m` | 下划线 | | | `\033[5m` | 闪烁(慢) | 部分终端不支持 | | `\033[7m` | 反色(前景/背景互换)| | | `\033[8m` | 隐藏(不可见) | | | `\033[9m` | 删除线 | 部分终端不支持 | --- ## **前景色** | 转义码 | 颜色 | 转义码(亮色) | |---------------|-----------|----------------| | `\033[30m` | 黑色 | `\033[90m` | | `\033[31m` | 红色 | `\033[91m` | | `\033[32m` | 绿色 | `\033[92m` | | `\033[33m` | 黄色 | `\033[93m` | | `\033[34m` | 蓝色 | `\033[94m` | | `\033[35m` | 品红 | `\033[95m` | | `\033[36m` | 青色 | `\033[96m` | | `\033[37m` | 白色 | `\033[97m` | --- ## **背景色** | 转义码 | 颜色 | 转义码(亮色) | |---------------|-----------|----------------| | `\033[40m` | 黑色 | `\033[100m` | | `\033[41m` | 红色 | `\033[101m` | | `\033[42m` | 绿色 | `\033[102m` | | `\033[43m` | 黄色 | `\033[103m` | | `\033[44m` | 蓝色 | `\033[104m` | | `\033[45m` | 品红 | `\033[105m` | | `\033[46m` | 青色 | `\033[106m` | | `\033[47m` | 白色 | `\033[107m` | --- ## **RGB 颜色** 如果终端支持 **24-bit 真彩色**,可以使用: ```c printf("\033[38;2;;;m"); // 设置前景色(RGB) printf("\033[48;2;;;m"); // 设置背景色(RGB) ``` **示例:** ```c printf("\033[38;2;255;100;0m这是橙红色文字\033[0m\n"); ``` --- ## **光标控制** | 转义码 | 作用 | |-------------------------|--------------------------| | `\033[A` | 光标上移 `` 行 | | `\033[B` | 光标下移 `` 行 | | `\033[C` | 光标右移 `` 列 | | `\033[D` | 光标左移 `` 列 | | `\033[;H` | 光标移动到第 `` 行、第 `` 列 | | `\033[J` | 清屏(光标以后) | | `\033[1J` | 清屏(光标以前) | | `\033[2J` | 清屏(整个屏幕) | | `\033[K` | 清除从光标到行尾的内容 | | `\033[1K` | 清除从光标到行首的内容 | | `\033[2K` | 清除全行的内容 | | `\033[s` | 保存光标位置 | | `\033[u` | 恢复光标位置 | ## **example** ``` #include #if __STDC__ != 1 #error "NO ansi !" #endif int main(void) { printf("-----TEXT STYLE-----\n"); printf("\033[0m\\033[0m\033[0m\n"); printf("\033[1m\\033[1m\033[0m\n"); printf("\033[2m\\033[2m\033[0m\n"); printf("\033[3m\\033[3m\033[0m\n"); printf("\033[4m\\033[4m\033[0m\n"); printf("\033[5m\\033[5m\033[0m\n"); printf("\033[6m\\033[6m\033[0m\n"); printf("\033[7m\\033[7m\033[0m\n"); printf("\033[8m\\033[8m\033[0m\n"); printf("\033[9m\\033[9m\033[0m\n"); printf("\n-----COLOR-----\n"); printf("\033[30m\\033[30m\033[0m - \033[90m\\033[90m\033[0m\n"); printf("\033[31m\\033[31m\033[0m - \033[91m\\033[91m\033[0m\n"); printf("\033[32m\\033[32m\033[0m - \033[92m\\033[92m\033[0m\n"); printf("\033[33m\\033[33m\033[0m - \033[93m\\033[93m\033[0m\n"); printf("\033[34m\\033[34m\033[0m - \033[94m\\033[94m\033[0m\n"); printf("\033[35m\\033[35m\033[0m - \033[95m\\033[95m\033[0m\n"); printf("\033[36m\\033[36m\033[0m - \033[96m\\033[96m\033[0m\n"); printf("\033[37m\\033[37m\033[0m - \033[97m\\033[97m\033[0m\n"); printf("\033[38;2;112;223;234m\\033[38;2;112;223;234m\033[0m\n"); printf("\033[40m\\033[40m\033[0m - \033[100m\\033[100m\033[0m\n"); printf("\033[41m\\033[41m\033[0m - \033[101m\\033[101m\033[0m\n"); printf("\033[42m\\033[42m\033[0m - \033[102m\\033[102m\033[0m\n"); printf("\033[43m\\033[43m\033[0m - \033[103m\\033[103m\033[0m\n"); printf("\033[44m\\033[44m\033[0m - \033[104m\\033[104m\033[0m\n"); printf("\033[45m\\033[45m\033[0m - \033[105m\\033[105m\033[0m\n"); printf("\033[46m\\033[46m\033[0m - \033[106m\\033[106m\033[0m\n"); printf("\033[47m\\033[47m\033[0m - \033[107m\\033[107m\033[0m\n"); printf("\033[48;2;112;223;234m\\033[48;2;112;223;234m\033[0m\n"); printf("\033[0m\n"); return 0; } ```