问题阐述
scanf函数是用于数据输入的,输入变量的值被改变,那么scanf函数本身是否有返回值,返回值是什么意义呢?
专家解答
scanf函数的返回值很少有人用到,它是一个整数,用于表示成功输入数据的个数,请看下面的例子:
#include "stdio.h"
main()
{
int a,b,c;
printf("输入三个整数:");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
执行结果:
图6.16 scanf()函数的错误输入
程序中由于对整数b试图输入2.5,而导致错误,实际上b只能得2,“.5”后的所有数据输入出错,不能正确赋值,因此c得不到正确结果。如果程序在这个基础上继续运行,会导致后面的错误越叠加越多,怎样由程序本身检查出这种错误呢,这时就可以用scanf函数的返回值来实现。
修改一下程序,取出scanf函数返回值,如果它的值是3,那么表示所有数据均已正确输入,如果小于3,必定出现错误输入。
以上程序可修改为:
#include "stdio.h"
main()
{
int a,b,c,n=0;
printf("输入三个整数:");
while(n!=3)
{
n=scanf("%d%d%d",&a,&b,&c);
if(n
printf("数据格式错误,请重新输入。\n");
flushall();
}
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
图6.17 加入错误检查的scanf()函数输入
专家点评
输入数据格式错误问题,很多初学者都会忽略,认为输入时总是没错的。
通过scanf函数的返回值,可以很好的解决这一问题。
关于【C语言编程锦囊】,可能你还想知道:
领取专属 10元无门槛券
私享最新 技术干货