这是我的代码:
int main(void)
{
char newr;
lol:
scanf("%c", &newr);
switch (newr) {
case 'a':
goto killswitch;
case 'b':
printf("You entered %c", newr);
goto lol;
break;
default:
printf("you entered something other than a or b\a\n");
goto lol;
break;
killswitch:
printf("ayyyy!");
goto lol;
break;
}
我的问题是,当我运行程序并输入一个字符时,让我们说在这种情况下,它会给我以下结果:
ayyyy!you entered something other than a or b
无论我输入的是什么字符,都会发生这种情况,例如,如果输入l,它将返回:
you entered something other than a or b
you entered something other than a or b
我很困惑。有谁知道这个的原因?
由于
答案 0 :(得分:3)
你一直打击进入。由于输入不是a
或b
,因此您的程序会正确指出这一点。
如果您输入" ab"您的计划应该表明它已收到a
,b
以及a
或b
以外的某些内容。
答案 1 :(得分:0)
删除goto lol;
killswitch:
printf("ayyyy!");
break;
答案 2 :(得分:0)
switch (newr) {
case 'a':
goto killswitch;
并打印“ayyy!”
然后它转移到'scanf'
并按下它后面的输入为'\ n'并再次进入开关。
答案 3 :(得分:0)
此问题的简单解决方案是稍微更改一个语句。
变化
scanf("%c", &newr);
到
scanf("\n%c", &newr);
您的程序将按您的要求运行!