为什么 getchar 不停止获取输入?
Why doesn't getchar stop to get input?
我有以下一段代码,它应该与用户交互,了解他想做什么。
int input;
printf("Would you like to update the name of the student?\n");
printf("Enter Y(yes) or N(no)\n");
input = getchar();
if (input == 'Y' || input == 'y') {
printf("Please enter the updated name\n");
scanf("%s", tmpSt->name);
}
printf("Would you like to update the student's ID?\n");
printf("Enter Y(yes) or N(no)\n");
input = getchar();
但是执行的时候并不会停下来获取第一个输入。
Would you like to update the name of the student?
Enter Y(yes) or N(no)
Would you like to update the student's ID?
Enter Y(yes) or N(no)
它应该得到名称的答案,但它直接转到了 id。
scanf("%s", ...)
将用户输入的换行符保留在输入流中。
而不是getchar()
,使用char c; scanf(" %c", &c);
初始space将使scanf()
忽略挂起的白色space,包括挂起的换行符。
同时检查 scanf()
的 return 值以检测无效输入和文件结尾。
我有以下一段代码,它应该与用户交互,了解他想做什么。
int input;
printf("Would you like to update the name of the student?\n");
printf("Enter Y(yes) or N(no)\n");
input = getchar();
if (input == 'Y' || input == 'y') {
printf("Please enter the updated name\n");
scanf("%s", tmpSt->name);
}
printf("Would you like to update the student's ID?\n");
printf("Enter Y(yes) or N(no)\n");
input = getchar();
但是执行的时候并不会停下来获取第一个输入。
Would you like to update the name of the student?
Enter Y(yes) or N(no)
Would you like to update the student's ID?
Enter Y(yes) or N(no)
它应该得到名称的答案,但它直接转到了 id。
scanf("%s", ...)
将用户输入的换行符保留在输入流中。
而不是getchar()
,使用char c; scanf(" %c", &c);
初始space将使scanf()
忽略挂起的白色space,包括挂起的换行符。
同时检查 scanf()
的 return 值以检测无效输入和文件结尾。