#include <stdio.h>
int main(){
int i=0,menuitem;
char ch;
printf("Please Choose Menu's Item...\n");
while (!(menuitem==1 || menuitem==2 || menuitem==3))
{
if (menuitem==0) break;
if(i++>0)
printf("Notice: Input Number(0-3),OK?\n");
ch = getchar();
menuitem = (int)ch - 48;
}
return menuitem;
}
上面这段程序,输入一个字符,然后回车,会连续出现两次Notice: Input Number(0-3),OK?,这可是一个bug,那么造成这个Bug的原因是什么呢,是因为getchar()一次只读一个字符,所以还有一个回车符没有读,所以才会这样。修改办法如下:
。。。。。
if(i++>0)
printf("Notice: Input Number(0-3),OK?\n");
ch = getchar();
getchar();
menuitem = (int)ch - 48;
。。。。。。