📅  最后修改于: 2023-12-03 15:38:13.317000             🧑  作者: Mango
在 C 语言中,可以使用 ANSI 转义序列来改变输出的颜色。ANSI 转义序列是以 ESC(ASCII码为27)开头的控制字符序列,用于控制终端的文本显示属性。
在 C 中,要以 ANSI 转义序列方式改变输出颜色,可以使用类似下面的语句:
printf("\033[32mHello World!\033[0m\n");
其中,\033[32m
表示设置输出颜色为绿色,\033[0m
表示取消所有颜色设置。可以参考下表,根据需要选择不同的颜色。
| 前景色 | 背景色 | | ------------ | ------------ | | 30 - 黑色 | 40 - 黑色 | | 31 - 红色 | 41 - 红色 | | 32 - 绿色 | 42 - 绿色 | | 33 - 黄色 | 43 - 黄色 | | 34 - 蓝色 | 44 - 蓝色 | | 35 - 紫色 | 45 - 紫色 | | 36 - 青色 | 46 - 青色 | | 37 - 白色 | 47 - 白色 | | 90 - 暗黑色 | 100 - 暗黑色 | | 91 - 亮红色 | 101 - 亮红色 | | 92 - 亮绿色 | 102 - 亮绿色 | | 93 - 亮黄色 | 103 - 亮黄色 | | 94 - 亮蓝色 | 104 - 亮蓝色 | | 95 - 亮紫色 | 105 - 亮紫色 | | 96 - 亮青色 | 106 - 亮青色 | | 97 - 亮白色 | 107 - 亮白色 |
除了使用 ANSI 转义序列方式,还可以使用 Windows API 来改变输出颜色。可以使用 SetConsoleTextAttribute
函数来设置控制台窗口的前景色和背景色。如下所示:
#include <windows.h>
int main() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
printf("Hello world!");
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return 0;
}
其中,GetStdHandle(STD_OUTPUT_HANDLE)
函数返回标准输出设备的句柄,SetConsoleTextAttribute
函数的第二个参数可以使用以下颜色:
FOREGROUND_BLUE // 蓝色
FOREGROUND_GREEN // 绿色
FOREGROUND_RED // 红色
FOREGROUND_INTENSITY // 强调(加粗、高亮)
BACKGROUND_BLUE // 蓝色背景
BACKGROUND_GREEN // 绿色背景
BACKGROUND_RED // 红色背景
#include <stdio.h>
int main()
{
// 使用 ANSI 转义序列方式
printf("\033[32mHello World!\033[0m\n");
// 使用 Windows API 方式
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
printf("Hello world!");
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return 0;
}
在 C 语言中,可以使用 ANSI 转义序列或 Windows API 来改变输出的颜色。使用 ANSI 转义序列方式可以在所有平台下使用,但不适用于 Windows 命令行窗口(可以使用 Git Bash 等终端模拟器)。使用 Windows API 方式仅适用于 Windows 平台,但可以实现更多的效果。