C Switch Statement输出两种情况

时间:2014-06-19 09:49:02

标签: c

这是我的代码:

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

我很困惑。有谁知道这个的原因?

由于

4 个答案:

答案 0 :(得分:3)

你一直打击进入。由于输入不是ab,因此您的程序会正确指出这一点。

如果您输入" ab"您的计划应该表明它已收到ab以及ab以外的某些内容。

答案 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);

您的程序将按您的要求运行!