C语言scanf()函数返回值的问题

对于scanf函数的返回值问题。个人有如下见解。

1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

下面给出一道题具体了解一下:

03-02-05 一颗红心两手准备(scanf函数的返回值) (300 分)

输入最多两个整数,如果输入的是一个整数,就输出它的平方,如果输入的是两个整数,就输出它们的乘积。

这就叫:一颗红心,两手准备。你准备好了吗?

输入样例:

25

输出样例:

625

输入样例:

2 5

输出样例:

10

代码如下:

#include<stdio.h>
int main()
{
	int a,b,i;
	i=scanf("%d%d",&a,&b);
	if(i==1)
	printf("%d",a*a);
	else if(i==2)
	printf("%d",a*b);
}

i就指的是可以接收scanf()函数的返回值,并输出显示出来。

当输入一个整数,则i的值为1.当输入两个整数,则i的值为2.当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时,返回值为n-1。

还有一些要特殊注意的地方。
int main()
{int a,b,i;
i=scanf("%d%d%d",&a,&b);
printf("%d",i);}应该输出2,因为就a和b两个输入项得到值了。但是结果却是3为什么?这样的话不是应该说成得到输入数据的格式说明的个数?是3,因为是3个%d,输入项的个数是3个,不过是进了缓冲区3个,两个被赋值了,一个扔掉了而已。那scanf()的返回值应该是进缓冲区的数据的个数,或是说得到输入数据的格式说明的个数,对吗?
像这样scanf("%d%d%d"如果输入1 2 3那返回值就是3,要是输入1 a 那返回值就是1因为只有第一个%d得到数据了,对吗?

scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。
如果输入数据与指定格式不符,则会产生输入错误。遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。
所以,通过scanf函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。
 

内容借鉴了:(1条消息) C语言scanf()函数返回值的问题_SHOW 的专栏-CSDN博客_scanf返回值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值