C语言-回炉重造(一)scanf的返回值
scanf() 函数,使用时通常只会了解格式化输入,但是这其实是一个有返回值的函数。
别人说scanf的返回值为:正确格式化输入的个数(很草率的回答,还是看例子吧)
测试例程
#include "stdio.h"
void main()
{
int a, b, c;
int k;
k=scanf("%d%d%d",&a,&b,&c);
printf("a=%d, ",a);
printf("b=%d, ",b);
printf("c=%d ",c);
printf("\n\n return value = %d \n",k);
system("pause");
}
测试项目
1.正常输入三个数
输入的三个都是正确格式,所以返回值是3
2.输入第一个是数,后两个是其他
输入的只有第一个都是正确格式,所以返回值是1
3.输入第一、二个是数,第三个是其他
输入的只有第一,二个都是正确格式,所以返回值是2
4.输入第一、三个是数,第二个是其他
你猜返回值是2,是么?
然而返回值是1,因为当scanf检测到第二个不是正确格式时,输入检测就停止了,后面的数据也就跟着都错误了,所以返回值是1
5.输入第一个是其他,第二、三个是数
第一个输入格式就不对了,scanf傲娇地不进行检测了,输入检测停止,后面的数据也就跟着都错误了,所以返回值是0
6.输入第一、二个是数,第三个就是回车
AMAZING!回车是没有用的,scanf很专一,会一直等你输入满三个量,才停止检测。当初是你说你要输入三个量,现在不输入完就不让走!
7.输入第一个是数,第二个是其他,第三个是回车
AMAZING+10086!scanf很生气,既然第二个就不是按照我的格式来,那回车就停止吧。不按照格式来,懒得理你,回车就说再见!
8.输入第一个是其他,第二个是回车
scanf很固执,既然第一个就不是按照我的格式来,那还是回车就停止吧。只要不按照格式来,回车就是再见!
结论
scanf的返回值,是第一个错误格式数据之前,正确格式数据的个数。
心得
程序用法还是要多多自己测试。
赶紧改论文去啊!