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
、ab
,以及除a
或b
之外的其他内容,您一直在按enter键。由于enter不是a
或b
,因此您的程序正确地指示了这一点
如果您键入“ab”,您的程序应该表明它收到了
a
、ab
,以及除a
或b
之外的其他内容,您一直在按enter键。由于enter不是a
或b
,因此您的程序正确地指示了这一点
如果您键入“ab”,您的程序应该表明它收到了
a
、ab
,以及除a
或b
之外的其他内容,您一直在按enter键。由于enter不是a
或b
,因此您的程序正确地指示了这一点
如果您键入“ab”,您的程序应表明它收到了a
、ab
、以及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()之后;。谢谢你的帮助是的,有人告诉我