C语言中以字符串形式输出枚举变量
学C语言的人都知道,每个枚举常量对应一个整形数字,很多时候可以像整形一样使用;
但枚举类型也有不它不方便的地方,比如,就不能直接输出枚举类型的字符串常量。举例说明,定义了枚举类型
typedef enum {North,East,South,West} directionT;
在程序中定义了变量
directionT dir=North;
如果想用
printf("The direction is %s",dir);
之类的语句直接输出
The direction is North
是做不到的,无论采用%s或%d,或者在dir前加强制类型转换。
所以可能的解决办法是函数
char * StringDirectionT(directionT dir)
{
switch(dir)
{
case North : return "North";
case East : return "East";
case South : return "South";
case West : return "West";
default : printf("Illegal direction value!\n;
}
}
然后用语句
printf("The direction is %s \n",StringDirectionT(dir));
来输出。