关于scanf()
主要是想看看scanf()的返回值,如下面的程序
#include <stdio.h>
void main()
{
int a;
int b;
int c;
printf( "请输入三个整数: ");
int x=scanf( "%d%d%d ",&a,&b,&c);
printf( "%d\t%d\t%d\n%d\n ",a,b,c,x);
}
输入 1 2 3时输出 1 2 3 3
输入 1 2 d时输出 1 2 X 2 //“X”是一个随机数
输入 1 d d时输出 1 X X 1 //“X”是一个随机数。
上面都没问题,但是,当
输入 1 d 3时输出 1 X X 1
scanf()函数返回的值不是正确按指定格式输入变量的个数吗?c的输入格式也是正确的,为什么返回值是1,而不是2?而且连c也一并没有赋值了?
[解决办法]
因为d不是数字,所以输入b的时候出错,输入缓存区没有清空,d还在那,所以输入c的时候还是出错。因此只有a输入正确,故返回值是1
[解决办法]
scanf的返回值是读取成功的个数,
你输入1 d 3
在读取时,1读取成功,d读取失败,返回,3就不读取了.