void main()
{
int a;
int b;
int c;
printf("请输入三个整数:");
int x=scanf("%d%d%d",&a,&b,&c);
printf("%d/n%d/n",a,x);
}
1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
从上边的例子中可以得到验证,这里用变量x接收scanf()函数的返回值,并输出显示出来。
当运行中输入三个整数:5 6 7则x的值为3;
如果输入5 6 d(即给c 赋值不正确)则x的值为2;
如果输入5 t d(即给b和c 赋值不正确)则x的值为1;
当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时,返回值为n-1
continue:
以前学习的时候书上说的是scanf()的返回值等于得到输入值的输入项的个数
scnaf(格式控制,输入项表);
照以上一般形式来看的话
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函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。
就楼主的这个程序而言,是一个错误的程序,会导致segmentation fault,
因为没有有效的地址接受这个输入的第三个数,whyglinux的解释是正确的,
如果程序可以正常的继续下去执行的话,返回值应该是2.
具体你的程序为什么能够返回,我不知道,我用的是gcc,winxp,运行的时候segmentation fault.
{
int a;
int b;
int c;
printf("请输入三个整数:");
int x=scanf("%d%d%d",&a,&b,&c);
printf("%d/n%d/n",a,x);
}
1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
从上边的例子中可以得到验证,这里用变量x接收scanf()函数的返回值,并输出显示出来。
当运行中输入三个整数:5 6 7则x的值为3;
如果输入5 6 d(即给c 赋值不正确)则x的值为2;
如果输入5 t d(即给b和c 赋值不正确)则x的值为1;
当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时,返回值为n-1
continue:
以前学习的时候书上说的是scanf()的返回值等于得到输入值的输入项的个数
scnaf(格式控制,输入项表);
照以上一般形式来看的话
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函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。
就楼主的这个程序而言,是一个错误的程序,会导致segmentation fault,
因为没有有效的地址接受这个输入的第三个数,whyglinux的解释是正确的,
如果程序可以正常的继续下去执行的话,返回值应该是2.
具体你的程序为什么能够返回,我不知道,我用的是gcc,winxp,运行的时候segmentation fault.