嘎,一上机懵了,请教下...
先看下面的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...
为什么哪?
因为在输入时,不光输入了一个字符,而且,在敲回车确认输入时,也输入了一个回车符...
解决的办法就是想法把那个回车符输出来...但怎么输哪?但我忘了...杯具...高人给提示下...
(当然还有别的毛病,比如:输入时不一定会只输入一个子符...在这,就光讨论回车符问题...)