int main()
{
int valid_input; /* when 1, data is valid and loop is exited */
char user_input; /* handles user input, single character menu choice */
valid_input = 0;
while (valid_input == 0)
{
printf("Continue (Y/N)?\n");
scanf_s(" %c", &user_input);
user_input = toupper(user_input);
if ((user_input == 'Y') || (user_input == 'N'))
valid_input = 1;
else
printf("\007Error: Invalid choice\n");
}
return 0;
}
无论输入什么字符,循环都不会退出。我可能会失明,因为我无法看清代码的错误。有更好视力的人请帮帮忙!
答案 0 :(得分:2)
取出scanf_s中%c之前的空格。
Example:
scanf_s("%c", &var);
它在我的机器上运行。
答案 1 :(得分:2)
与scanf和wscanf不同,scanf_s和wscanf_s要求为所有包含在[]中的c,C,s,S或字符串控件集的输入参数指定缓冲区大小。字符的缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后。
所以,要阅读你需要的角色:
scanf_s(" %c", &user_input, 1);