关于scanf 输入数据与接收数据类型不同时产生的问题
我用一个int型的变量去接收一个数据,接收格式设置为%d。我的环境为vs2013
程序代码:#define _CRT_SECURE_NO_DEPRECATE
# include <stdio.h>
#include<stdlib.h>
#define see system("pause")
void main()
{
int i=0;
int n = 12;//循环次数
while (n--){
scanf("%d",&i);
printf("i=%d\n", i);
}
see;
}当我正常输入数字时是正常的,当我输入一个数字,显示一个数字。但是当我输入的数据不是数字的时候,比如“w”,就成了无限输出上一个正确的数字,而不再提供输入(scanf失效),请问这是为什么?
我猜测可能是输入数据流的问题,所以我就刷新了一下输入数据流
程序代码:#define _CRT_SECURE_NO_DEPRECATE
# include <stdio.h>
#include<stdlib.h>
#define see system("pause")
void main()
{
int i=0;
int n = 12;
while (n--){
scanf("%d",&i);
printf("i=%d\n", i);
fflush(stdin);
}
see;
}此时,scanf有效,提供输入口,但是如果你输入的是非数字,比如“w”,它还是不能读入w,输出原有最后一次的正确数。请问这是什么原因,scanf对格式错误的数据的处理方式是什么?










细,非常感谢!!!