ANSI C中的颜色控制台?

Moh*_*nde 6 c console colors

是否可以在简单的ANSI C中为控制台输出着色?没有外部库?这可以在Windows,Linux或Mac OS X中完成吗?

小智 8

是的,在 Linux/Mac 中可以使用 ANSI C89。
您可以操纵文本的字体和颜色。使用以下命令:

printf("%c[0;00mHello, world!\n", 27); /* White color     */
printf("%c[1;33mHello, world!\n", 27); /* Yellowish color */
printf("%c[1;34mHello, world!\n", 27); /* Blueish color   */
Run Code Online (Sandbox Code Playgroud)

请注意“;”的左侧部分 (其中数字 0、1 是)操作文本字体,“;”的右侧部分 操纵颜色。
您可以自己尝试并找出新的颜色。

此代码使用"-ansi -pedantic"命令进行编译,没有警告或错误。

在基于 Windows 的系统中,您可以使用以下示例实现彩色控制台文本/文本背景:

#include <stdio.h>
#include <windows.h>

int main(void)
{   
    /* Point to our console */
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    int i = 0;

    /* Iterate through colors */ 
    for(; i < 255; i++)
    { /* i stands for color type: could refer to actual text color or background color of text */
        SetConsoleTextAttribute(hConsole, i);
        printf("Colorful text");
    }

    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

祝你好运!


ken*_*ytm 7

只是简单的ANSI C?

不.C标准不假设标准输出是控制台或有颜色.

这可以在Windows,Linux或Mac OS X中完成吗?

是.请参阅如何以跨平台方式在Mac OS X上以彩色打印到控制台?适用于Linux和Mac OS X.

对于Windows,如果要避免使用外部库,则可能需要直接访问控制台功能.

  • 您链接到的答案不包括Windows! (2认同)