读书人

关于循环输入的有关问题

发布时间: 2013-03-27 11:22:42 作者: rapoo

关于循环输入的问题

scanf ("%c",&mletter); 

while (mletter<'A'||mletter>'Z')
{
if (mletter == '0')
break;
printf ("wrong upper letter ! enter again !\n");
printf ("letter:_\b");
scanf ("%c",&mletter);

}

以上是我写的关于鉴定输入大写字母是否合法 ,非法时重新输入部分的代码,
如果我输入的非除 0 以外的非大写字母,为什么会出现下面这种情况,
-----------------

letter:a
wrong upper letter ! enter again !
letter:wrong upper letter ! enter again !
letter:_
------------
我键入了一个值 然后通过回车键将此值送到mletter ,编译器认为我输入了两个字符??
那我该怎样解决这个问题了??
---------
c
[解决办法]
在while中的scanf前加一句 fflush(stdin); // 刷新缓冲区

读书人网 >C语言

热点推荐