当我键入M或F时,它会直接跳到循环的“无效选项”部分,而不是打印特定文本。任何意见都表示赞赏。
#include <stdio.h>
int main() {
int MorF; //gender choice
printf("_____________________________________\n\n");
printf("Pick a gender. Type: M for Male or F for Female\n");
scanf(" %d" , &MorF);
if ( MorF == 'm' || MorF == 'M' ) {
printf("You chose Male\n");
} else if ( MorF == 'f' || MorF == 'F' ) {
printf("You chose Female\n");
} else {
printf("Invalid Option\n");
}
printf("______________________________________\n\n");
}
答案 0 :(得分:0)
https://www.tutorialspoint.com/c_standard_library/c_function_getchar.htm
您可能希望使用getchar或类似的东西代替scanf,或者使用%c代替scanf。现在,似乎你要求一个int,但检查字符输入。
答案 1 :(得分:0)
matrix
格式说明符将扫描以10为底的整数。您要一个%d
。 char
的正确格式说明符是char
,正确的格式 string 可以避免无限循环,因为%c
找不到有效的输入,并留了下来scanf
中的stdin
。也就是说,如果您坚持使用" %c"
而不是scanf
或getchar
。