【发布时间】:2021-12-17 03:43:05
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
enum gender {male, female};
int main () {
enum gender choice;
printf("Your gender: ");
scanf("%u", &choice);
switch(choice)
{
case male: printf("You're a man."); break;
case female: printf("You're a woman."); break;
default: printf("Try again.");
}
return 0;
}
我给控制台写什么并不重要,它向我展示了“男性”案例,“你是一个男人。”。我试过用引号和单引号写案例,但它不起作用。你能帮助我吗?这是我在这里的第一个问题,如果我有任何错误,也请原谅我的英语。
【问题讨论】:
-
scanf("%u", &choice);==>if (scanf("%u", &choice) != 1) { fprintf(stderr, "unable to scanf.\n"); exit(EXIT_FAILURE); } -
male和female是符号,一旦程序编译运行,它们就不再存在,就像变量名不再存在一样。尝试输入0或1而不是male或female。 -
您输入的输入示例是什么?
scanf()调用的返回值是多少?请注意,"%u"说明符表示无符号整数值,scanf()永远不会解释枚举标识符。 -
@FredLarson 他正在输入
male或female -
@FredLarson 我使用了“%u”,因为它不适用于“%s”和“%d”。我在这里搜索了我的问题,他们说我使用“%u”。我应该用什么来代替“%u”?
标签: c enums switch-statement scanf