我在创建的开关/案例语句中遇到问题,以便对输入进行字符检查。
我对switch / case语句的理解如下:
switch (variable)
{
case value0:
Code to execute if variable==value0
break;
case value1:
Code to execute if variable==value1
break;
...
default:
Code to execute if variable does not equal the value following any of the cases
break; // not necessarily needed but good practice
}
所以我提出的字符验证方法如下:(抱歉,格式化不是很好!在此之前,validInput设置为0,我删除了一些代码以帮助突出显示我的问题)
while (validInput==0) // creates loop awaiting valid input
{
scanf("%c",&replay);
switch (replay) // BUG TO FIX, displays default text before character entry
{
case 'Y':
case 'y':
//printf("Yes key pressed\n"); //debug
turns = lives;
validInput = 1;
break;
case 'N':
case 'n':
//printf("No key pressed\n"); //debug
end = yes;
validInput = 1;
break;
default:
printf("Invalid input, please try again\n");
break;
}
}
每次我得到的是
输入无效,请再试一次
*然后在这里我可以输入角色,行为符合预期。 Y(或y)像我想要的那样重新启动,N(或n)退出游戏。所有其他键都显示两次文本,我已经表明了对下面顺序的理解:
Invalid input, please try again
l
Invalid input, please try again
Invalid input, please try again
R
Invalid input, please try again <- this is the error message I want to display
Invalid input, please try again <- this is the 'awaiting input' stage...
等
为什么它在等待输入时会在开头显示默认情况?我真的不想为所有其他钥匙写一个特长的案子!
编辑我认为这是一个转换/案例问题,但事实证明这是一个scanf问题。我不知道,但感谢那些帮助修复它的人。我的问题是-1因为这个:(