【问题标题】:Is there any way to change text color in C? [duplicate]有没有办法改变C中的文本颜色? [复制]
【发布时间】:2019-10-30 05:29:53
【问题描述】:

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

printf("hello world");

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

【问题讨论】:

    标签: c


    【解决方案1】:

    终端通常(甚至在 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-09
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        相关资源
        最近更新 更多