问题描述
- 枚举类型输出无法输出字符串
-
#includetypedef 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
", OppositeDirection(North));
return 0;
}运行后总是停止工作,然而我把printf("%s
", OppositeDirection(North));改成
printf("%d
", OppositeDirection(North));后却能显示正确的整型数值,但我想输出字符串啊,是哪里出问题了呢?
解决方案
做不到。因为枚举对应的字符串根本在编译后的程序中就没有。
只能再写switch case输出
http://blog.chinaunix.net/uid-20412333-id-1950066.html
解决方案二:
C 语言确实没有你想要的这个功能,可能 C# 或者 Java 有这样的功能,那是因为 C# 或者 Java 中的枚举其实是一个类。
在 C 语言中,只能自己编码实现:因为 C 语言中枚举只是一个简单的数字,所以可以按枚举的数值输出字符串。
解决方案三:
你可以对应的定义一个{“string”}的字符数组,enum 返回下标,给字符数组,完后输出就比较类似了,楼上都说了,c里面没这个功能
解决方案四:
enum枚举类型的输出方式