如何以跨平台的方式在控制台上打印?

如何在Mac OS X和Linux上使用“printf”输出彩色文本?

Solutions Collecting From Web of "如何以跨平台的方式在控制台上打印?"

您可以使用ANSI颜色代码。 这是一个示例程序:

#include <stdio.h> int main(int argc, char *argv[]) { printf("%c[1;31mHello, world!\n", 27); // red printf("%c[1;32mHello, world!\n", 27); // green printf("%c[1;33mHello, world!\n", 27); // yellow printf("%c[1;34mHello, world!\n", 27); // blue return 0; } 

27escape字符。 如果您愿意,可以使用\e

网络上有所有代码的列表。 这是一个 。

另一个选择是:

 #首先定义一些颜色(你可以把它放在你的.bashrc文件中):
红色= '\ E [0;31米'
 RED = '\ E [1;31米'
蓝色= '\ E [0;34米'
 BLUE = '\ E [1;34米'
青色= '\ E [0;36米'
 CYAN = '\ E [1;36米'
绿色= '\ E [0;32米'
 GREEN = '\ E [1;32米'
黄色= '\ E [0;33米'
 YELLOW = '\ E [1;33米'
 NC = '\ E [0米'
 #################

然后你可以输入终端:

 echo -e“$ {RED}这是一个错误$ {NC}”
 echo -e“$ {YELLOW}这是一个警告$ {NC}”
 echo -e“$ {GREEN} Everythings fine!$ {NC}”

最后不要忘记$ {NC}。 NC代表“无颜色”,这意味着你的句子后,它将恢复到正常的颜色。 如果你忘了它,整个提示和命令之后将是你指定的颜色(当然你可以键入'echo -e'$ {NS}“'来改回它)。

为了获得最佳的可移植性,请查询terminfo数据库。 在shell中,

 colors=(black red green yellow blue magenta cyan white) for ((i = 0; i < ${#colors[*]}; i++)); do ((j=(i+1)%${#colors[*]})) printf '%s%s%s on %s%s\n' "$(tput setaf $i)" "$(tput setab $j)" \ "${colors[i]}" "${colors[j]}" "$(tput op)" done 

将打印出来

在红色的黑色
红色在绿色
绿色的黄色
在蓝色的黄色
蓝色洋红色
青色洋红色
在白色的青色
在黑色的白色

但颜色。