在控制台中更改文本颜色
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
这段代码有两个问题:
system("echo \x1b[32m");
做与 puts("\x1b[32m");
完全相同的事情,但速度更慢。它创建一个子进程并运行某个条带的命令解释器,然后它必须解释命令echo ␛[32m
。我不知道有什么理由写 system("echo ...")
.
字节序列␛[32m
(1b 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,它会弄清楚它在和什么对话并使用正确的控制序列(或不如果不支持,请完全使用颜色)。
我是 C 的新手,我想知道使用 system() 是否是更改控制台中文本颜色的好方法。
int main()
{
system("echo \x1b[32m");
printf("hello");
return 0;
}
它是跨平台的吗?
你可以做到
printf("\x1b[32m");
与系统命令一样,您只是告诉它打印将控制台变为绿色的转义码,因此您可以单独打印它以达到相同的效果。 Printf 适用于大多数设备,而系统无法在某些设备上运行,因此首选 printf。
如果您有兴趣,这里有更多颜色代码的列表:https://gist.github.com/RabaDabaDoba/145049536f815903c79944599c6f952a
这段代码有两个问题:
system("echo \x1b[32m");
做与puts("\x1b[32m");
完全相同的事情,但速度更慢。它创建一个子进程并运行某个条带的命令解释器,然后它必须解释命令echo ␛[32m
。我不知道有什么理由写system("echo ...")
.字节序列
␛[32m
(1b 5b 33 32 6d
)是一个ANSI X3.64 terminal control code which may or may not be understood by whateverstdout
is connected to. It is better to use a terminal control library, such as ncurses,它会弄清楚它在和什么对话并使用正确的控制序列(或不如果不支持,请完全使用颜色)。