#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i;
while (scanf("%d", &i)!=EOF)
printf("i=%d\n", i);
//输入ctrl+Z回车 三次 即可退出循环。
return 0;
}
//scanf返回值是成功读取的个数
1、scanf中只接受%d类型的数据,也就是整型;
2、连续读取的时候,如果输入了a,scanf因为只接受整型,所以不接受字符型,这时scanf返回0;EOF是等于-1,零不等于负一,所以循环会一直进行,打印i的值;
3、处理办法:vs老版本(2012)用fflush(stdin)来清空缓冲区,即scanf里面输入的字符型数据,
vs更新的版本利用rewind(stdio)来解决。
具体代码如下
while (rewind(stdin),scanf("%d", &i)!=EOF)
//只用在while中加入rewind(stdin),老版本将其替换为fflush(stdin);