📜  如何在 c 中以绿色输出 (1)

📅  最后修改于: 2023-12-03 15:38:13.317000             🧑  作者: Mango

在 C 中如何以绿色输出

在 C 语言中,可以使用 ANSI 转义序列来改变输出的颜色。ANSI 转义序列是以 ESC(ASCII码为27)开头的控制字符序列,用于控制终端的文本显示属性。

1. 改变输出颜色
1.1. 以 ANSI 转义序列方式改变输出颜色

在 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 - 亮白色 |

1.2. 以 Windows API 方式改变输出颜色

除了使用 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        // 红色背景
2. 示例代码
#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;
}
3. 结论

在 C 语言中,可以使用 ANSI 转义序列或 Windows API 来改变输出的颜色。使用 ANSI 转义序列方式可以在所有平台下使用,但不适用于 Windows 命令行窗口(可以使用 Git Bash 等终端模拟器)。使用 Windows API 方式仅适用于 Windows 平台,但可以实现更多的效果。