qfedu-c-level/day13/ANSI_TMP.c

99 lines
3.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
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; // 文本属性