有什么办法可以在C语言中更改文字颜色吗?

时间:2019-06-16 09:00:32

标签: c

我在Ubuntu 18.04上使用GCC。 我希望文字为其他颜色。
例如:

printf("hello world");

我尝试使用conio.h,但是编译器给我一个错误,提示conio.h不可用。我该如何实现?

2 个答案:

答案 0 :(得分:1)

<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 。实际上,它不会改变颜色,但是我不在乎,因为我有颜色提示。 :)

答案 1 :(得分:0)

终端(通常在Windows上)通常受Ansi Escape codes控制。您可以使用它们来控制输出颜色或光标的位置。请参阅:How to make win32 console recognize ANSI/VT100 escape sequences?https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences