【发布时间】:2021-10-01 03:08:27
【问题描述】:
我是 C 编程的新手。 我正在练习通过无限循环读取用户输入,并检查输入是元音还是常量。 我用一个开关来检查它,但是当我执行我的代码时,总是执行默认情况,我被卡住了。
如果有人能给我一些建议,将不胜感激,谢谢!
#include <stdio.h>
void checkIfVowel(char *c);
int main()
{
char c;
while (1)
{
printf("Please enter a character: ");
scanf("%c", &c);
checkIfVowel(&c);
}
return 0;
}
void checkIfVowel(char *c)
{
switch (*c)
{
case 'A':
printf("%c is a vowel! \n", *c);
break;
case 'E':
printf("%c is a vowel! \n", *c);
break;
case 'I':
printf("%c is a vowel! \n", *c);
break;
case 'O':
printf("%c is a vowel! \n", *c);
break;
case 'U':
printf("%c is a vowel! \n", *c);
break;
case 'a':
printf("%c is a vowel! \n", *c);
break;
case 'e':
printf("%c is a vowel! \n", *c);
break;
case 'i':
printf("%c is a vowel! \n", *c);
break;
case 'o':
printf("%c is a vowel! \n", *c);
break;
case 'u':
printf("%c is a vowel! \n", *c);
break;
default:
printf("%c is a constant! \n", *c);
break;
}
}
【问题讨论】:
-
换行符也是一个字符,将由
scanf("%c",..)返回。 -
谢谢! @interjay 我该如何修改它?
-
您不需要将指针传递给
checkIfVowel。而且您不需要函数中的所有printf调用...case 'A': case 'E': ... case 'U': printf(...); break;也可以。
标签: c while-loop switch-statement