首页 > 解决方案 > 有没有办法改变C中的文本颜色?

问题描述

我在 Ubuntu 18.04 上使用 GCC。我希望文本是不同的颜色。
例如:

printf("hello world");

我尝试使用 conio.h 但编译器给我一个错误,即 conio.h 不可用。我怎样才能实现它?

标签: c

解决方案


<conio.h>对于 Windows 来说是典型的。在 Linux 中,您将一些控制代码放入字符串中。大多数资料都描述了如何在 bash 中做到这一点(比如这个How to change the output color of echo in Linux),但是您可以在 C 中轻松使用它。所以首先您可以使用 hexdump 来获取 bash 中的序列如何转换为字符串:

$ echo -e "\033[0;31m" foo #this print foo in red
foo

$ echo -e "\033[0;31m" foo | hexdump -C
00000000  1b 5b 30 3b 33 31 6d 20  66 6f 6f 0a              |.[0;31m foo.|
0000000c

如您所见,只需将第一部分更改为二进制代码 0x1b。

最后我用 C 编写代码:

#include <stdio.h>
int main () {
    printf("%c[0;31mFOO\n", 0x1b);
    return 0;
}

并将FOO打印为红色。实际上它不会改变颜色,但我不在乎,因为我有颜色提示。:)


推荐阅读