jas*_*r77 18 c c++ linux terminal colors
我在Linux上运行了一个C文件.它以红色(失败)打印一些线条,以绿色(通过)打印一些线条.正如您所料,它在printf语句中使用转义码,如下所示:
#define BLACK "\033[22;30m"
#define GREEN "\033[22;31m"
printf(GREEN "this will show up green" BLACK "\n");
Run Code Online (Sandbox Code Playgroud)
如果最后的BLACK不存在,终端文本将继续为所有内容为绿色.如果你没有抓住它,那对于具有非黑色背景的终端窗口来说没问题,但是否则你最终会得到黑底黑字.不好!运行程序有这个问题,捕获文本文件中的输出,然后使用"更多"或"更少"查看文件也是如此.
是否有代码恢复默认值而不是在printf语句的末尾指定颜色?这需要在C中,但我有兴趣阅读其他方法.
更新: 谢谢大家.您的回复帮助我在其他地方找到更有用的信息.我更新了我的宏如下(注意31是红色的,我修正了下面的拼写错误):
#define RESET_COLOR "\e[m"
#define MAKE_GREEN "\e[32m"
printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n");
Run Code Online (Sandbox Code Playgroud)
我发现以下链接有助于理解这些代码的工作原理:
http://www.phwinfo.com/forum/comp-unix-shell/450861-bash-shell-escapes-not-working-via-putty-ssh.html 解释了这些转义序列的作用,并在可移植性时使用ncurses需要.
http://www.linuxselfhelp.com/howtos/Bash-Prompt/Bash-Prompt-HOWTO-6.html
http://bluesock.org/~willg/dev/ansi.html显示更多的转义序列; 有用的了解大局
Frx*_*rem 23
尝试使用:
#define RESETCOLOR "\033[0m"
Run Code Online (Sandbox Code Playgroud)
这应该将其重置为默认值.
有关这些终端代码的更多信息,请访问:http://en.wikipedia.org/wiki/ANSI_escape_code