程序跑飞了,高手求救
做了一个命令测试程序,当输入你个非16进制的数时,程序就飞了,高手指教
程序如下:
int main()
{
int i;
unsigned int ch;
while(1)
{
printf( "\ninput the command code(FF is eixt): ");
scanf( "%x ",&ch);
printf( "%x ",ch);
switch(ch)
{
case 0x00:
Test_00H();break;
case 0x10:
Test_10H();break;
case 0x20:
Test_20H();break;
case 0x22:
Test_22H();break;
case 0x30:
Test_30H();break;
case 0x32:
Test_32H();break;
case 0x3C:
Test_3CH();break;
case 0x40:
Test_40H();break;
case 0x70:
Test_70H();break;
case 0xFF:
exit(0);break;
default:
printf( "input Error!\n ");
}
}
getch();
return 0;
}
输入以16进制数正常,但输入非16进制的其他意外字符和符号时,程序就飞了
[解决办法]
估计是这一句 scanf( "%x ",&ch); 有问题。
由于有非法数据输入,缓冲区有残余信息。
用fflush(stdin);清除一下。