我在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


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

最佳答案

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

详细的答案在How to convert enum names to string in c中给出

08-26 01:28