标题:嘎,一上机懵了,请教下...
只看楼主
FMaster
Rank: 2
等 级:论坛游民
帖 子:63
专家分:62
注 册:2010-9-1
结帖率:88.89%
 问题点数:0 回复次数:2 
嘎,一上机懵了,请教下...
先看下面的C语句...(本人手机无大括号,就用中括号来表示...)
while((ch=getchar())!='#')
[
switch(ch)
[
case 'a':printf("1");
break;
case 'b':printf("2");
break;
default:
printf("3");
break;
]
]
上面的语句,就当它没有毛病,(我们现在讨论的是这语句的BUG问题,不是语法问题)
这个语句,理论上当输入a时,输出1,输入b时,输出2,输入除a,b外的字符时,输出3,但这是理论上的......
实际上...
输入a,输出1和3,输入b,输出2和3,输入除a或b外的字符时,输出33...
为什么哪?
因为在输入时,不光输入了一个字符,而且,在敲回车确认输入时,也输入了一个回车符...
解决的办法就是想法把那个回车符输出来...但怎么输哪?但我忘了...杯具...高人给提示下...
(当然还有别的毛病,比如:输入时不一定会只输入一个子符...在这,就光讨论回车符问题...)
搜索更多相关主题的帖子: 上机 上机 
2010-09-28 10:30
cacker
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-09-28 12:07
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
输入字母后。因为要按回车,而回车留在输入流中。getchar()读取了这个回车,回车并不是a和b,故输出3。

while((ch=getchar())!='#')


—>〉Sun〈<—
2010-09-28 12:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-321564-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.177037 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved