c语言中大部分自带的方法都有返回值,像scanf方法如果输入正确的话,它会返回一个正整数,所以你可以通过它来判断,如果输入不正确的话它返回是0,你就可以通过这个判断是否为非法输入。
scanf()函数有返回值且为int型。
scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
风轻的做法不太完全,在输入11a22时,会将a之后的舍弃而认为是正确的整形11.
fun()
{
char ch[11];
int i = 0;
int input = 0;
ch[i] = (char)getchar();
while( ch[i] != '\n')
{
if(ch[i]>'9'||ch[i]<'0')
{
printf("error!");
fflush(stdin);
return 1; /* error */
}
ch[++i] = (char)getchar();
}
sscanf(ch, "%d", &input);
printf("%d",input);
fflush(stdin);
return input;
}
11a11 error!
1111 1111 返回1111
int n;
while(scanf("%d",&n)==0)
{
printf("输入错误,请重新输入:");
fflush(stdin);
}