关于scanf的返回值

今天写一个小程序时误用while(scanf("%d",&b)!=a),以为scanf的返回值就是输入的值。

其实真相是:

scanf返回接收到的变量值的个数。
int  a,b,c。
a 1进去时,试图用字符‘a’对a赋值,肯定是错的,于是退出,返回成功接收到赋值的个数 0.
1 a进去时,首先a能获取1.但b不能获取‘a‘,于是返回只是1
如果是  1 1的话,那就都成功,返回2

即返回值应为正确输入的个数,毕竟人家是输入函数嘛。
时间: 2024-10-01 20:14:36

关于scanf的返回值的相关文章

printf与scanf的返回值、注意点

printf()的返回值为其输出字符串常量的字符数(注意字符数与字数的区别)注意计数针对所有的打印字符,包括空格和不可见的换行字符(不包括字符串的空字符). scanf()函数返回成功读入的项目的个数.即在下面程序中scanf的返回值为1.如果没有读取任何项目(如它期望一个数字但是出入了一个非数字字符),它会返回值0.当它检测到“文件结尾”时,它返回EOF(EOF是文件stdio.h中定义的特殊值.一般,#define 指令把EOF 的值定义为 -1).    int n; float  p; 

C语言scanf函数返回值小记

scanf scanf是C标准库stdio里面定义的用于获取用户输入的函数,具体的介绍可以在CppReference上看到.scanf的返回值是已经成功赋值的变量个数,也就是说在 scanf("%d %d",&a,&b)这个调用返回的值在用户输入1 2时返回的是2,如果用户输入的是1 b,那么返回值为1,如果输入的是a b,那么返回的是0. 问题 刚刚用了这个例子,发现输入字母时会导致一直无限输出0: #include <stdio.h> int main(

函数scanf的返回值

代码: #include <stdio.h> #include <stdlib.h> int main(void) { int i; double d; char ch; int counter; counter = scanf("%i %lf %c", &i, &d, &ch); printf("The return value of function is %d.\n", counter); return EXIT

scanf返回值问题

闲着没事看C primer plus,看到书中对于scanf输入的判断,常用如下方法: 此时它将返回1视为我输入成功,如果不为1则视为输入失败.那到底scanf的返回值具体指的是什么呢? 例子1: 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);} 运行结果是:

scanf返回值的问题

关于scanf的返回值,MSDN里是这样写的:Both scanf and wscanf return the number of fields successfully convertedand assigned; the return value does not include fields that were read butnot assigned. A return value of 0 indicates that no fields were assigned.The retur

使用函数返回值的循环例子

计算数值的整数次幂的例子:实例程序: //power.c--计算数值的整数次幂 #include<stdio.h>  double power (double n,int p);//函数声明 int main(void) {  double x,xpow; int exp; printf("Enter a number and the positive integer power to which\n the number will be raised. Enter q to qui

关于while(scanf_s(&quot;%d&quot;,&amp;x)!=0) 的逻辑错误 (scanf_s的 返回值)

背景:1.要求输入多组数据,然后输出什么东西,当第一个数输入的是0是,程序停止. 2.前几天学过 while(scanf_s("%d",&x)!=EOF) ctrl+z时停止 所以我想可以把EOF换成0,这样输 入0是就可以停止,但是事实证明我错了. 知识储备:scanf_s的返回值 : scanf("%d %d",&a,&b); 函数返回值为int型.如果a和b都被成功读入,那么scanf的返回值就是2: 如果只有a被成功读入,返回值为1:

scanf,printf函数的返回值

参考自:https://www.douban.com/note/220299804/ scanf函数的返回值有三种情况: (1)第一种就是返回一个正整数,表示输入成功元素的个数. (2)第二种如果返回的值为0,代表输入不匹配,没有正确输入任何值,所以有了下面的代码. (3)第三种返回-1(EOF)也就是输入流结束.Windows:CTRL + Z表示输入结束,Linux:CTRL + D. printf函数的返回值为输出元素的个数.printf("%d\n", 1);  //2 #in

scanf和cin的返回值(转)

需要连续从标准输入读取数据时,可以采用下面两种不同的方式判断文件结束: [cpp] view plaincopy intwhile"%d"dowhiledo 首 先看scanf,当成功读取时返回读取的项的数目,如:scanf("%d %d",&i,&j)返回2,scanf("%d %f %s",&i, &f, c)返回3.这个数目可以是你希望读取的项数,也可能小于希望读取的项数,在匹配失败时返回0(如:用scanf