枚举类型输出无法输出字符串

#include

typedef enum {North, East, South, West} directionT;

directionT OppositeDirection(directionT dir)
{
switch(dir) {
case North: return (South);
case East: return (West);
case South: return (North);
case West: return (East);
}
}

int main()
{
printf("%s\n", OppositeDirection(North));
return 0;
}

运行后总是停止工作,然而我把printf("%s\n", OppositeDirection(North));改成
printf("%d\n", OppositeDirection(North));后却能显示正确的整型数值,但我想输出字符串啊,是哪里出问题了呢?

做不到。因为枚举对应的字符串根本在编译后的程序中就没有。
只能再写switch case输出

http://blog.chinaunix.net/uid-20412333-id-1950066.html

C 语言确实没有你想要的这个功能,可能 C# 或者 Java 有这样的功能,那是因为 C# 或者 Java 中的枚举其实是一个类。
在 C 语言中,只能自己编码实现:因为 C 语言中枚举只是一个简单的数字,所以可以按枚举的数值输出字符串。

你可以对应的定义一个{“string”}的字符数组,enum 返回下标,给字符数组,完后输出就比较类似了,楼上都说了,c里面没这个功能