在控制台中更改文本颜色

Change Text Color in the Console

我是 C 的新手,我想知道使用 system() 是否是更改控制台中文本颜色的好方法。

int main()
{
    system("echo \x1b[32m");
    printf("hello");

    return 0;
}

它是跨平台的吗?

你可以做到

printf("\x1b[32m");

与系统命令一样,您只是告诉它打印将控制台变为绿色的转义码,因此您可以单独打印它以达到相同的效果。 Printf 适用于大多数设备,而系统无法在某些设备上运行,因此首选 printf。

如果您有兴趣,这里有更多颜色代码的列表:https://gist.github.com/RabaDabaDoba/145049536f815903c79944599c6f952a

这段代码有两个问题:

  1. system("echo \x1b[32m"); 做与 puts("\x1b[32m"); 完全相同的事情,但速度更慢。它创建一个子进程并运行某个条带的命令解释器,然后它必须解释命令echo ␛[32m。我不知道有什么理由写 system("echo ...").

  2. 字节序列␛[32m1b 5b 33 32 6d)是一个ANSI X3.64 terminal control code which may or may not be understood by whatever stdout is connected to. It is better to use a terminal control library, such as ncurses,它会弄清楚它在和什么对话并使用正确的控制序列(或不如果不支持,请完全使用颜色)。