C开关语句输出两种情况

C开关语句输出两种情况,c,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

这是我的密码:

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;
}
我的问题是,当我运行程序并键入一个字符时,比如在本例中为a,它会给出以下结果:

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
我很困惑。有人知道这件事的原因吗


谢谢你一直按回车键。由于enter不是
a
b
,因此您的程序正确地指示了这一点


如果您键入“ab”,您的程序应该表明它收到了
a
、a
b
,以及除
a
b
之外的其他内容,您一直在按enter键。由于enter不是
a
b
,因此您的程序正确地指示了这一点


如果您键入“ab”,您的程序应该表明它收到了
a
、a
b
,以及除
a
b
之外的其他内容,您一直在按enter键。由于enter不是
a
b
,因此您的程序正确地指示了这一点


如果您键入“ab”,您的程序应该表明它收到了
a
、a
b
,以及除
a
b
之外的其他内容,您一直在按enter键。由于enter不是
a
b
,因此您的程序正确地指示了这一点

如果您键入“ab”,您的程序应表明它收到了
a
、a
b
、以及
a
b
以外的内容,请删除转到lol

killswitch:
printf("ayyyy!");
break;
移除goto lol

killswitch:
printf("ayyyy!");
break;
移除goto lol

killswitch:
printf("ayyyy!");
break;
移除goto lol

killswitch:
printf("ayyyy!");
break;
然后打印“哎呀!”

然后转到“scanf”

您按下的enter键作为“\n”再次进入开关

然后打印“哎呀!”

然后转到“scanf”

您按下的enter键作为“\n”再次进入开关

然后打印“哎呀!”

然后转到“scanf”

您按下的enter键作为“\n”再次进入开关

然后打印“哎呀!”

然后转到“scanf”


您按下的enter键作为“\n”再次进入开关。

此问题的简单解决方案是只稍微更改一条语句

改变

scanf("%c", &newr);


现在,您的程序将按您的意愿运行

这个问题的简单解决方法是只稍微更改一个语句

改变

scanf("%c", &newr);


现在,您的程序将按您的意愿运行

这个问题的简单解决方法是只稍微更改一个语句

改变

scanf("%c", &newr);


现在,您的程序将按您的意愿运行

这个问题的简单解决方法是只稍微更改一个语句

改变

scanf("%c", &newr);



现在,您的程序将按您的意愿运行

我明白了,谢谢!那么你能告诉我如何按enter键使计算机忽略按键吗?@AndrewHu这完全取决于你想做什么。您可以添加另一个
案例来忽略输入。您可以添加第二个
scanf
(并忽略结果)来跳过回车。@AndrewHu在scanf()调用之后,添加一个对getchar()的调用,在该调用中,您放弃了按enter键产生的换行符。啊,是的,解决了这个问题!谢谢大家的帮助。@AndrewHu如果这解决了你的问题,你应该通过按David帖子左侧的大复选标记来接受他的正确答案。还考虑给它一个赞成票,因为它是有益的。我明白了,谢谢!那么你能告诉我如何按enter键使计算机忽略按键吗?@AndrewHu这完全取决于你想做什么。您可以添加另一个
案例来忽略输入。您可以添加第二个
scanf
(并忽略结果)来跳过回车。@AndrewHu在scanf()调用之后,添加一个对getchar()的调用,在该调用中,您放弃了按enter键产生的换行符。啊,是的,解决了这个问题!谢谢大家的帮助。@AndrewHu如果这解决了你的问题,你应该通过按David帖子左侧的大复选标记来接受他的正确答案。还考虑给它一个赞成票,因为它是有益的。我明白了,谢谢!那么你能告诉我如何按enter键使计算机忽略按键吗?@AndrewHu这完全取决于你想做什么。您可以添加另一个
案例来忽略输入。您可以添加第二个
scanf
(并忽略结果)来跳过回车。@AndrewHu在scanf()调用之后,添加一个对getchar()的调用,在该调用中,您放弃了按enter键产生的换行符。啊,是的,解决了这个问题!谢谢大家的帮助。@AndrewHu如果这解决了你的问题,你应该通过按David帖子左侧的大复选标记来接受他的正确答案。还考虑给它一个赞成票,因为它是有益的。我明白了,谢谢!那么你能告诉我如何按enter键使计算机忽略按键吗?@AndrewHu这完全取决于你想做什么。您可以添加另一个
案例来忽略输入。您可以添加第二个
scanf
(并忽略结果)来跳过回车。@AndrewHu在scanf()调用之后,添加一个对getchar()的调用,在该调用中,您放弃了按enter键产生的换行符。啊,是的,解决了这个问题!谢谢大家的帮助。@AndrewHu如果这解决了你的问题,你应该通过按David帖子左侧的大复选标记来接受他的正确答案。还考虑给它一个投票,因为它是有益的。是的,我被告知解决方案是添加一个GETCHARE();在scanf()之后;。谢谢你的帮助是的,我被告知解决方案是添加一个getchar();在scanf()之后;。谢谢你的帮助是的,我被告知解决方案是添加一个getchar();在scanf()之后;。谢谢你的帮助是的,有人告诉我