scanf输入枚举类型
时间: 2023-07-26 18:38:19 浏览: 382
可以使用以下方法来使用 scanf 输入枚举类型:
假设有如下枚举类型定义:
```
typedef enum {
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
} Weekday;
```
可以使用以下代码来输入枚举类型:
```
Weekday day;
if (scanf("%d", &day) != 1) {
printf("Error: Invalid input\n");
exit(1);
}
switch (day) {
case MON:
printf("Monday\n");
break;
case TUE:
printf("Tuesday\n");
break;
case WED:
printf("Wednesday\n");
break;
case THU:
printf("Thursday\n");
break;
case FRI:
printf("Friday\n");
break;
case SAT:
printf("Saturday\n");
break;
case SUN:
printf("Sunday\n");
break;
default:
printf("Invalid day\n");
break;
}
```
在此示例中,我们首先定义了一个名为 `day` 的枚举类型变量。然后,我们使用 `scanf` 函数从用户输入中读取一个整数值,并将其存储在 `day` 变量中。如果 `scanf` 函数返回的值不等于 1,则表示输入无效,我们将打印错误消息并退出程序。
接下来,我们使用 `switch` 语句来根据输入的整数值来输出相应的星期几名称。请注意,我们将枚举类型的每个值与相应的字符串进行比较,以确定输出哪个字符串。如果输入的整数值不属于枚举类型,则输出 "Invalid day"。
阅读全文