scanf函数的返回值是什么?

scanf函数的返回值与正确输入数据的个数有关,当输入有错误时,错误输入之前正确输入数据的个数即为scanf的返回值。简而言之,scanf返回值等于读取到正确数据的个数


初学者可能会问:scanf函数竟然有返回值?别急,我们先用一个简单的例子体会一下:

判断多个数的奇偶性:

#include<stdio.h>

void OE(int a)
{
	if (a % 2 == 1)
		printf("Odd\n");
	else
		printf("Even\n");
}

int main()
{
	int i = 0;
	while (scanf("%d", &i) == 1)
	{
		OE(i);
	}
	return 0;
}

 13488c2960d644288e4054e47ac7fba2.png

注:odd表示奇数,even表示偶数。

scanf("%d", &i) == 1判断条件实现了数据的多次读取,那么也就说明了当输入int数据时,scanf函数的返回值是1,因为只有这样循环才能不断执行。

那么有些的小伙伴可能要说:“我明白了,scanf函数的返回值是1。”,这是完全错误的,scanf函数的返回值不是定值!


我们再看一个例子:

题目要求:能输入多组数并比较每组数中两个数的大小。

大家可以先想一下用什么循环判断条件,还能是scanf返回值为1吗?

代码:

#include <stdio.h>
void max(int x, int y) 
{
    if (x > y)
        printf("%d>%d\n", x, y);
    else if (x == y)
        printf("%d=%d\n", x, y);
    else
        printf("%d<%d\n", x, y);
}
int main() 
{
    int a, b;
    while (scanf("%d %d", &a, &b) == 2)
    {
        max(a, b);
    }
    return 0;
}

代码运行结果:

b58f7f901d3d4a2ea9ea7889e724dbe3.png循环条件使用scanf("%d %d", &a, &b) == 2,实现了循环读取。因此,就目前来看,可以猜想:输入的数据有多少个,其返回值就是多少。


但是,当输入x和1时,程序结束,说明scanf的返回值不是2,那又是多少呢?

这里,通过两个代码进行测试:

 cf1fcec0c310430fbc706f74daa7abf6.png

scanf的返回值为0!

48cb35e8fce5447fa2d271719dae34d0.png

这次scanf的返回值为2! 说明scanf读取到错误数据停止了


总结:

 从以上的实例分析,我们最终得出结论:scanf函数的返回值与正确输入数据的个数有关,当输入有错误时,错误输入之前正确输入数据的个数即为scanf的返回值。简而言之,scanf返回值等于读取到正确数据的个数

补充:

循环条件也可以是(scanf("%d %d",&a,&b) != EOF)

EOF是End Of File的缩写,是在 stdio.h 里定义的常量(通常值为-1),表示输入流已经结束。

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值