c++ - C 代码更改终端文本颜色;如何恢复默认值? Linux

标签 c++ c linux colors terminal

我有一个在 Linux 上运行的 C 文件。它以红色(失败)和绿色(通过)打印一些行。如您所料,它在 printf 语句中使用如下转义码:

#define BLACK  "\033[22;30m"
#define GREEN  "\033[22;31m"

printf(GREEN "this will show up green" BLACK "\n");

如果末尾的黑色不存在,则终端文本将继续为绿色。如果您没有捕获它,这对于具有非黑色背景的终端窗口来说很好,但否则您最终会得到黑底黑字。不好!运行程序会出现这个问题,捕获文本文件中的输出然后用“more”或“less”查看文件也是如此。

是否有恢复默认值而不是在 printf 语句末尾指定颜色的代码?这需要在 C 中,但我有兴趣阅读其他方法。


我更新了我的宏如下(注 31 为红色):

#define RESET_COLOR "\e[m"
#define MAKE_GREEN "\e[32m"

printf(MAKE_GREEN "this will show up green" RESET_COLOR "\n");

我发现以下链接有助于理解这些代码的工作原理:

最佳答案

尝试使用:

#define RESETCOLOR "\033[0m"

这应该将其重置为默认值。

关于这些终端代码的更多信息可以在 ANSI escape code 中找到。 .

关于c++ - C 代码更改终端文本颜色;如何恢复默认值? Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3506504/

相关文章:

c++ - memchr 一个bin文件

linux - RSYSLOG从Linux服务器到Windows机器

linux - Ubuntu caffe安装报错:/usr/bin/ld: cannot find -lcudnn

linux - Git 不影响提交后的更改

c++ - '>=' 之前的预期主表达式错误

c++ - 吸氧剂,Eclox : Functions autocomplete not working with decorating macros

c - 如何响应以 `system` 启动的程序的提示?

c - 如何使用libcurl获取网页标题

c++ - string 和 int 对象或左值/右值的内存位置

c++ - 带空格的 std::cin 输入?