关于scanf函数输入不当的出现的问题
#include<stdio.h>int main()
{
int num,A=1;
while(A)
{
printf("输入一个数:\n");
//scanf("%d",&num);
if(scanf("%d",&num)==1)
{
if(num%3 ==0&&num%5==0)
{ printf("%d能被3和5整除\n",num);A=0; }
else
{ printf("%d不能被3和5整除\n",num);A=0; }
}
else { printf("error\n");A=1; }
}
getchar();
getchar();
return 0;
} 这个程序输入字符的时候出现死循环
正确的程序:#include<stdio.h>
#include<ctype.h>
#include <stdlib.h>
int main()
{
int num,A=1;
while(A)
{
printf("输入一个数:\n");
//scanf("%d",&num);
if(scanf("%d",&num)==1)
{
if(num%3 ==0&&num%5==0)
{ printf("%d能被3和5整除\n",num);A=0; }
else
{ printf("%d不能被3和5整除\n",num);A=0; }
}
else { printf("error\n");A=1;fflush(stdin); }
}
getchar();
getchar();
return 0;
}
我想问的是 scanf()函数全部正常读取,它就返回几,在键盘缓冲区留不留信息,为什么?而输入了非法数据,键盘缓冲区就可能还个有残余信息问题。