我用switch写了课设的菜单,大致上是这样的代码
#include <stdio.h>
int main()
{
int choice;
while(1)
{
scanf("%d",&choice);
switch(choice)
{
case 1: printf("ojbk\n"); break;
default: printf("error\n");
}
}
return 0;
}
在输入1时得到ojbk,其它数字时得到error,但在输入a时,出现了满屏的error
起初想从从scanf的返回值入手
scanf在输入a时,返回值是0;
但是在加入if来判断之后似乎并没有什么用。。。
然后猜测是缓冲区的问题
于是在最后一行加入fflush(stdin);
解决了问题。
#include <stdio.h>
int main()
{
int choice;
while(1)
{
scanf("%d",&choice);
switch(choice)
{
case 1: printf("ojbk\n"); break;
default:
printf("error\n");
fflush(stdin);
break;
}
}
return 0;
}