scanf的返回值与循环输入
scanf()是拥有返回值的,它的返回值为正确按指定格式读入变量的个数,可以借此特性来循环读入,并当读入不正确时自动结束
代码
#include <stdio.h>
#include <windows.h>
int main(){
int i, a, b, c;
/* scanf函数返回值为正确按指定格式读入变量的个数 */
a = scanf("%d %d", &b, &c);
printf("scanf return:%d\n", a);
/* 从输入流循环读取i,直到scanf输入空值 */
/* ~按位取反,-1的16进制为0xffffffff,f的二进制为1111,取反后值为0 */
/* 用Ctrl + Z结束输入 */
while(~scanf("%d", &i)){
printf("%d\n",i);
}
printf("=============================\n");
/* EOF即End of File值为-1,是C标准函数库中的文件结束符, 所以上边的代码也可以改为*/
while (scanf("%d", &i) != EOF) {
printf("%d\n", i);
}
system("pause");
return 0;
}