你这个属于强迫症,读到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;
}