首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANSI转义码显示不正确

ANSI转义码显示不正确
EN

Stack Overflow用户
提问于 2016-05-13 07:26:12
回答 1查看 2.6K关注 0票数 2

我有以下定义:

代码语言:javascript
复制
#define ANSI_COLOR_RED     "\e[31m"
#define ANSI_COLOR_GREEN   "\e[32m"
#define ANSI_COLOR_YELLOW  "\e[33m"
#define ANSI_COLOR_BLUE    "\e[34m"
#define ANSI_COLOR_MAGENTA "\e[35m"
#define ANSI_COLOR_CYAN    "\e[36m"
#define ANSI_COLOR_RESET   "\e[0m"

然后,我这样使用这些:

代码语言:javascript
复制
char *getStatusColour(eTaskState state) {
    switch (state) {
        case eRunning:
            return ANSI_COLOR_GREEN;
            break;
        case eReady:
            return ANSI_COLOR_YELLOW;
            break;
        case eBlocked:
            return ANSI_COLOR_RED;
            break;
        case eSuspended:
            return ANSI_COLOR_BLUE;
            break;
        case eDeleted:
            return ANSI_COLOR_RESET;
            break;
    }

    return ANSI_COLOR_RESET;
}

printf("%s TEST %s\n", getStatusColour(eRunning), ANSI_COLOR_RESET);

但是,终端输出不起作用(IE:没有颜色,颜色应该在哪里),这是一个未知的字符(IE:不可显示的东西)。

你知道为什么这不管用吗?

编辑

应该注意的是,当我更改为:

代码语言:javascript
复制
#define ANSI_COLOR_GREEN \e[32m\\]

但是文本被截断了,我不知道\\]是做什么的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-13 07:43:09

请注意,\e不是标准转义代码,因此可能会导致(行为未定义!)失败。

代码语言:javascript
复制
% gcc ansi.c -pedantic
ansi.c: In function ‘main’:
ansi.c:4:12: warning: non-ISO-standard escape sequence, '\e'
     printf("\e[1;32mfoobar");

使用\033\x1B代替。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37203782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档