C语言中以字符串形式输出枚举变量

本文探讨了在C语言中如何将枚举类型转换为字符串输出的问题,提供了三种实用的方法:使用switch-case语句、利用数组索引以及通过宏定义实现。这些方法能够帮助开发者在程序中更灵活地处理枚举类型,提升代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个枚举常量对应一个整形数字,很多时候可以像整形一样使用.但枚举类型也有不方便的地方.比如不能直接输出枚举类型的字符串常量.举例说明.定义了枚举类型:

typedef enum 
{
	SUNDAY,
	MONDAY,
	TUESDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY
} t_Week;

在程序中定义了变量t_Week vl_Week=SUNDAY;
如果想用printf("The Week is %s".,vl_Week);之类的语句直接输出The Week is SUNDAY.
是做不到的,无论采用%s或%d,或者在vl_Week前加强制类型转换.
有以下几个方法可以实现.
1.使用switch-case进行装换

char * StringDirectionT(t_Week vp_Week)
{
        switch(vp_Week)
        {
                case SUNDAY : return "SUNDAY";
                case MONDAY  : return "MONDAY";
                case TUESDAY : return "TUESDAY";
                case WEDNESDAY  : return "WEDNESDAY";
                case THURSDAY  : return "THURSDAY";
                case FRIDAY  : return "FRIDAY";
                case SATURDAY  : return "SATURDAY";
                default    : printf("Illegal direction value!\n;
        }
}

然后用语句printf("The Week is %s \n",StringDirectionT(vl_Week));
2.使用数组

char *a_Week[] = { "SUNDAY", "MONDAY", "TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","FRIDAY","SATURDAY"}; 

然后直接根据vl_Week的值去对应的数组元素

3.使用宏定义

#define enumToStr(WEEEK)  "\""#WEEK"\""

printf("The Week is %s",enumToStr(vl_Week));

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值