Files
qfedu-c-level/day13/ANSI_TMP.c
T

99 lines
3.3 KiB
C

/*
ANSI转义序列可以用来设置终端中文本的颜色、背景色和其他属性。以下是一些常见的ANSI颜色代码及其对应的颜色值:
- 前景色(文本颜色):
- 黑色:`\033[30m`
- 红色:`\033[31m`
- 绿色:`\033[32m`
- 黄色:`\033[33m`
- 蓝色:`\033[34m`
- 紫色:`\033[35m`
- 青色:`\033[36m`
- 白色:`\033[37m`
- 背景色:
- 黑色:`\033[40m`
- 红色:`\033[41m`
- 绿色:`\033[42m`
- 黄色:`\033[43m`
- 蓝色:`\033[44m`
- 紫色:`\033[45m`
- 青色:`\033[46m`
- 白色:`\033[47m`
除了前景色和背景色,ANSI转义序列还可以用来设置其他文本属性,例如加粗、下划线、闪烁等。以下是一些常见的ANSI属性代码及其对应的属性:
- 加粗:`\033[1m`
- 下划线:`\033[4m`
- 闪烁:`\033[5m`
- 反显(交换前景色和背景色):`\033[7m`
- 隐藏(使文本不可见):`\033[8m`
你可以将这些属性代码与前景色、背景色代码组合使用,以实现更多的效果。例如,要设置红色加粗文本,可以使用`\033[31;1m`。
除了设置文本颜色、背景色和其他属性,ANSI转义序列还可以用来控制终端的显示,例如清空屏幕、移动光标等。以下是一些常见的ANSI控制代码及其对应的操作:
- 清空屏幕:`\033[2J`
- 将光标移动到屏幕左上角:`\033[H` 或 `\033[1;1H`
- 将光标向上移动n行:`\033[nA`
- 将光标向下移动n行:`\033[nB`
- 将光标向右移动n列:`\033[nC`
- 将光标向左移动n列:`\033[nD`
- 隐藏光标:`\033[?25l`
- 显示光标:`\033[?25h`
除了常见的ANSI转义序列,还有一些特殊的控制代码,可以用来实现一些高级的终端操作。以下是一些常见的特殊控制代码及其对应的操作:
- BEL(响铃):`\a`
- ESC(转义字符):`\e` 或 `\033`
- CSI(控制序列引导):`\033[`
- OSC(操作系统命令):`\033]`
这些特殊控制代码通常用于与终端外部环境进行交互,例如向终端发送提示音、设置终端标题等。其中,OSC代码可以用来向终端发送自定义的命令,以实现一些特殊的功能。例如,可以使用OSC代码设置终端的图标、背景图片等。
需要注意的是,这些特殊控制代码可能在不同的终端程序或操作系统中有所不同。如果你想要在程序中使用这些代码,最好先查看终端程序或操作系统的文档,确保代码的兼容性和正确性。
*/
#include <stdio.h>
#include <string.h>
typedef enum front_color_e
{
BLACK = 30, // 黑色
RED, // 红色
GREEN, // 绿色
YELLOW, // 黄色
BLUE, // 蓝色
PURPLE, // 紫色
CYAN, // 青色
WHITE, // 白色
} Front_Color; // 前景色
typedef enum back_color_e
{
BLACK_B = 40, // 黑色
RED_B, // 红色
GREEN_B, // 绿色
YELLOW_B, // 黄色
BLUE_B, // 蓝色
PURPLE_B, // 紫色
CYAN_B, // 青色
WHITE_B, // 白色
} Back_Color; // 背景色
typedef enum attr_e
{
BOLD = 1, // 加粗
UNDERLINE = 4, // 下划线
BLINK, // 闪烁
REVERSE = 7, // 反显
HIDE, // 隐藏
} Attr; // 文本属性