这是代码:
for(i = 1; i <= 4; i++)
{
scanf("%c", &input);
choice = ChooseGame(input);
}
// ChooseGame function (Definition)
int ChooseGame(char input)
{
switch (input) {
case '1': choice = 1;
printf("Game 1!");
break;
default:
choice = 0;
printf("Wrong input, please try again!n");
}
return choice;
}
我正在尝试获取 1 个字符的输入,但如果例如用户输入"234",它会跳过 3 个步骤而不是 1 个步骤。
我该如何解决它?谢谢!
这
背后的原因是n
上一个scanf
留下的(按 Enter 时)。
试试这个
scanf(" %c",&input);
// ^space
格式说明符前面的空格%c
吃掉所有换行符,将帮助您解决此问题。
问题是由于输入键或某些空格字符导致的尾随换行符执行此操作:
for(i=1; i<=4; i++)
{
scanf("%c",&input);
while(getchar() != 'n');
choice = ChooseGame(input);
}
示例输出
或者你可以在scanf
的%c
之前放一个空格:
for(i=1; i<=4; i++)
{
scanf(" %c",&input);
choice = ChooseGame(input);
}