对于C语言,我知道我关闭了,但是对于输入的任何字符,打印输出是"辅音"。我的switch case语句有什么问题。我需要if
个陈述吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name;
printf("Enter a character: ");
scanf_s("%c", &name);
switch (name)
{
case 'a':
printf("Vowel");
break;
case 'e':
printf("Vowel");
break;
case 'i':
printf("Vowel");
break;
case 'o':
printf("Vowel");
break;
case'u':
printf("Vowel");
break;
case 'y':
printf("Sometimes");
break;
default:
printf("Consonant");
}
return 0;
}
答案 0 :(得分:6)
请注意scanf_s()
的Microsoft页面显示:
对于字符,可以按如下方式读取单个字符:
char c; scanf_s("%c", &c, 1);
您的scanf_s()
来电失败,但您没有查看结果,所以您不知道。
总是 检查输入功能的结果!
并确保您已阅读了您正在使用的功能的手册页。
使用" %c"
作为跳过空格的格式字符串可能也是个好主意。但是,这是后来的改进。
break;
案例标签中的代码后面没有default:
。这不是一个好主意。
您可以使用:
if (scanf_s("%c", &name, 1) == 1)
{
switch (name)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("Vowel\n");
break;
case 'y':
printf("Sometimes\n");
break;
default:
printf("Consonant\n");
break;
}
}
else
fprintf(stderr, "Failed to read a character\n");
请注意,所有大写字母,标点符号,空格和控制字符都被视为辅音。这并不完全准确。