C语言 scanf
来源:百度知道 编辑:UC知道 时间:2024/06/04 16:37:32
int i,key=1;
while(key)
{ printf("\n\t\t欢迎使用");
printf("您需要哪项操作?\n");
scanf("%d",&i);
switch(i)
{case 1: inquire(); break;
case 2: manage(); break;
case 0:key=0; break;
default: printf("输入错误\n");
}
}
程序其他的部分就没有列出来了 肯定是没有问题的 问题是 我这里有个选择 是1 2 0 意思就是如果输入其他的 就会报错误 返回重新输入 输入1或2 就调用别的函数。 如果我输入3 4 8 9啊 这些 都能输出 输入错误 但是为什么我输入d f 这些字符的时候 它就会不停的运行 不停的输出 欢迎使用 您需要哪项操作 和输入错误 然后就无限的这样下去了。
于是我就想把 i 改成 char型的 char i;然后scanf("%c",&i);
case'1':case '2': 这样在选择时 输入d f 这样的就不无限输出了
但是每次输入错误(就是不是1或2或0)时 它会输出两遍输入错误 才重新让我选择
于是我在第二次的那个基础上 把scanf("%s",&i); 就成功了
……
我晕了 高手解答啊
while(key)
{ printf("\n\t\t欢迎使用");
printf("您需要哪项操作?\n");
scanf("%d",&i);
switch(i)
{case 1: inquire(); break;
case 2: manage(); break;
case 0:key=0; break;
default: printf("输入错误\n");
}
}
程序其他的部分就没有列出来了 肯定是没有问题的 问题是 我这里有个选择 是1 2 0 意思就是如果输入其他的 就会报错误 返回重新输入 输入1或2 就调用别的函数。 如果我输入3 4 8 9啊 这些 都能输出 输入错误 但是为什么我输入d f 这些字符的时候 它就会不停的运行 不停的输出 欢迎使用 您需要哪项操作 和输入错误 然后就无限的这样下去了。
于是我就想把 i 改成 char型的 char i;然后scanf("%c",&i);
case'1':case '2': 这样在选择时 输入d f 这样的就不无限输出了
但是每次输入错误(就是不是1或2或0)时 它会输出两遍输入错误 才重新让我选择
于是我在第二次的那个基础上 把scanf("%s",&i); 就成功了
……
我晕了 高手解答啊
这个是键盘缓冲区残余信息问题
你可以百度搜下,这方面的介绍很多的.
例如:
http://baike.baidu.com/view/1390039.htm
http://hi.baidu.com/cxyy_%D4%C6%D2%A3/blog/item/1b3bbd7b1f3329f30ad18795.html
http://www.baidu.com/s?ie=gb2312&bs=scanf+%BC%FC%C5%CC%BB%BA%B3%E5%C7%F8&sr=&z=&cl=3&f=8&wd=%BC%FC%C5%CC%BB%BA%B3%E5%C7%F8%B2%D0%D3%E0%D0%C5%CF%A2&ct=0