【问题标题】:C: display colored output to console not workingC:向控制台显示彩色输出不起作用
【发布时间】:2020-10-19 04:01:25
【问题描述】:

我正在使用 Xcode 并尝试向控制台显示彩色输出。它不起作用,我不知道为什么,我查看了其他堆栈溢出帖子并尝试了有效的代码。 感谢您的帮助!

  #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ANSI_COLOR_RESET "\x1b[0m"
#define ANSI_COLOR_CYAN "\x1b[36m"


void dispWrongs(char guess, int wordLength);

int main(void) {
        srand(time(NULL));            //sends a "seed" for random number generation
   
    printf(ANSI_COLOR_CYAN "                       _        _            \n");
    printf(ANSI_COLOR_CYAN "  ___ ___  _   _ _ __ | |_ _ __(_) ___  ___  \n");
    printf(ANSI_COLOR_CYAN " / __/ _ \\| | | | '_ \\| __| '__| |/ _ \\/ __\\ \n");
    printf(ANSI_COLOR_CYAN "| (_| (_) | |_| | | | | |_| |  | |  __/\\__ \\ \n");
    printf(ANSI_COLOR_CYAN " \\___\\___/ \\__,_|_| |_|\\__|_|  |_|\\___||___/"ANSI_COLOR_RESET"\n");
  
return 0;
}

【问题讨论】:

  • 您的代码应该可以工作。但请确保您的终端支持这一点。那么,你用什么终端呢?
  • 终端是什么意思?我正在使用 Xcode
  • XCode 的内置输出窗口很可能不支持 ANSI 颜色代码。当人们说“终端”时,他们指的是您与 Shell 交互的操作系统的命令行界面。在 Mac OSX 上,甚至还有一个名为 Terminal 的内置程序。也许从在那里运行你的程序开始。
  • 这些字符串"\x1b[..." 是使您的输出可见的软件的控制序列,通常称为“终端”,因为它是数据传输的终端。所以这个软件必须解释这些字符串并设置颜色或执行序列应该表示的任何事情。如果软件不支持这些序列,您将看不到所需的效果,在您的情况下是颜色。

标签: c output-formatting


【解决方案1】:

您使用的是 VT/ANSI 代码。为此,请确保在支持此功能的终端窗口中运行应用程序。

macOS 终端应用程序位于 Applications 的 Utilities 文件夹中。

但是,如果您想要一种更智能的颜色显示方式,您应该使用 curses 库(如 ncurses),因为它会根据您用于运行应用程序的终端类型检测正确的颜色显示方式。

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 2015-12-20
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    相关资源
    最近更新 更多