C语言中用scanf返回值判断时,如果输入一个函数,例如int a;

C语言中用scanf返回值判断时,如果输入一个函数,例如int a;if(scanf“%d”,&a)==1)。。。但是输入11a也判断成功,为什么,,那应该怎么改使其只有输入整数时才表示为成功,其他变量和字符都不可以

你这个属于强迫症,读到a就停了,下次读取时清空缓冲区就行了

实在要追求完美,给你个非常规方法例子:

#include<stdio.h>
#include <string.h>
int main()
{
int a; 
char test[100];
if (scanf("%d", &a) == 1)
{
ungetc('t', stdin);   //向缓冲区写入一个字符't'
scanf("%s", test);    //然后以字符串方式读取缓冲区,因为缓冲区至少一个字符't',所以不用再次键盘输入
if (strlen(test) > 1)   //如果读出来的字符串长度大于1,说明上次输入的有剩下的非法字符
{
printf("输入错误,有非数字字符\n");
rewind(stdin);  //清空缓冲区
}
else
printf("输入OK!");
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-31
scanf本来就是这样设计的,读入数字,直到遇到第一个非数字的内容就停止。
如果想只能录入数字,其他情况都报错,需要以字符串接收,然后用atoi函数进行转换,转换失败就意味着输入错误。
相似回答