如何从C中的枚举获取相对字符串值?

时间:2018-09-03 06:50:16

标签: c printf enumeration

我在C语言中有一个枚举,如下所示:

typedef enum {
    idle,
    backup,
    charge,
} ENUM_LUMI_STATE;

我有以下功能:

ENUM_LUMI_STATE controllerGetState(void) {
    return idle;
}

我想在这里打印:

printf("the current status of the system is %s \r\n", controllerGetState());

如您在此处看到的,结果是晦涩的:

  

系统当前状态为þqst

我要打印的系统当前状态为“空闲”。 你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:1)

controllerGetState(void)函数返回一个枚举,而不是字符串。因此,使用%s作为返回值将返回垃圾。您可以使用%d来获取值,在这种情况下,该值为0。

详细答案在How to convert enum names to string in c

中给出