目录
前言
scanf 的返回值有三种情况:
- 正整数
- 0
- EOF
一.正整数的情况
1.介绍
当scanf函数接收到几个字符时,它的返回值就是几。
2.代码实例
2.1 输入整数型
#include <stdio.h>
int main()
{
int x, y;
int m = scanf("%d %d", &x, &y);
printf("%d\n",m);
return 0;
}
情况一
假如输入:2003 2004
输出:2
情况二
假如输入:2003 2004 2005 2006
输出:2
情况三
假如输入:2003,2004
输出:1
- 情况一,scanf中只有两个%d来接受数字,当输入两个数字时,scanf的返回值是2 。
- 情况二,当输入超过两个数字时,scanf的返回值还是2,因为scanf函数只读取到了两个输入数据,所以它的返回值是2,与其他无关。
- 情况三,在scanf中,是以%d %d的形式来接收数据的,但是输入的确实%d,%d的形式,可以正确读取到2003,无法读取2004,所以返回1(正确输入了一个变量)。
2.2 输入字符型
#include <stdio.h>
int main()
{
char a, b, c, d;
int n = scanf("%c %c %c %c", &a, &b, &c, &d);
printf("%d\n",n);
return 0;
}
假如输入:a b c d
输出:4
可以看出,当在第二个scanf函数中输入四个字符时,scanf的返回值是一个整数4。字符型也可能会出现上述三个情况
2.3 输入字符串型
#include <stdio.h>
int main()
{
char arr[100];
int n = scanf("%s", &arr);
printf("%d\n",n);
return 0;
}
假如输入:galaxypokemon
输出:1
因为只输入了一个字符串,所以scanf的返回值是1。 字符串型也可能会出现上述三个情况
二.0的情况
1.介绍
当scanf的输入类型不匹配时,其返回值就是0
2.代码实例
#include <stdio.h>
int main()
{
int a = 0;
int n = scanf("%d", &a);
printf("%d\n",n);
return 0;
}
假如输入:a
输出:0
可以看到,输入类型是int的情况下,我们输入了字符类型的字母a,就会导致scanf的返回值变为0。
三.EOF的情况
1.介绍
EOF是在标准库函数里定义的常量,ASCII码值为-1。EOF是End Of File的缩写,意为文件结束的标志。在输入时按ctrl+z后,可以看到屏幕里会出现^Z的字符,就可以结束输入
2.代码实例
#include<stdio.h>
int main()
{
int x;
while (scanf("%d", &x) != EOF) {
printf("%d\n", x);
}
}