scanf函数的返回值与正确输入数据的个数有关,当输入有错误时,错误输入之前正确输入数据的个数即为scanf的返回值。简而言之,scanf返回值等于读取到正确数据的个数

初学者可能会问:scanf函数竟然有返回值,什么是返回值?别急,我们先用一个简单的例子体会一下:

判断多个数的奇偶性

注:odd表示奇数,even表示偶数。

可以看到,这个循环语句所使用的判断条件实现了多次循环,那么也就说明了当输入整数时,scanf函数的返回值是1,因为只有这样循环才能不断执行。

那么有些的小伙伴可能要说:“我明白了,scanf函数的返回值是1。”,这是完全错误的,scanf函数的返回值不是定值

为了说明这个问题,我们再看一个例子。

题目要求:设计一个代码,能实现输入多组数并比较每组数中两个数的大小。

大家可以先想一下用什么循环判断条件,还能是scanf返回值为1吗?

参考代码:

#include <stdio.h>
void max(int x, int y)
{if (x > y)printf("%d>%d\n", x, y);else if (x == y)printf("%d=%d\n", x, y);elseprintf("%d<%d\n", x, y);
}
int main()
{int a, b;while (scanf("%d %d", &a, &b) == 2){max(a, b);}return 0;
}

代码运行结果:

 从运行结果可以看到,循环条件使用scanf函数的返回值为2,实现了循环。因此,就目前来看,可以猜想,当scanf输入的值有多少个,其返回值就是多少。

但是,当输入x和1时,程序结束,说明scanf的返回值不是2,那又是多少呢?

这里,小灿写了两个代码进行测试:

scanf的返回值为0!

这次scanf的返回值为2! 说明当scanf读取到错误数据时就会停止。

这就回答了上面的问题。

总结:

从以上的实例分析,我们最终得出结论:scanf函数的返回值与正确输入数据的个数有关,当输入有错误时,错误输入之前正确输入数据的个数即为scanf的返回值。简而言之,scanf返回值等于读取到正确数据的个数

补充:

循环条件也可以是(scanf("%d %d",&a,&b) != EOF)

EOF是End Of File的缩写,是在 stdio.h 里定义的常量(通常值为-1),表示输入流已经结束。

scanf函数的返回值是什么?相关推荐

  1. C语言scanf函数的返回值、scanf函数的安全版、在while条件中使用scanf函数

    scanf函数的返回值,是正确读取的项数:读入一个数,返回1,读入2个数,则返回2,如此: VC2012,先做一个测试程序: 提示出错: error C4996: 'scanf': This func ...

  2. scanf函数的返回值问题

    1.scanf()函数有返回值且为int型. 2.scanf()函数返回的值为:正确按指定格式输入变量的个数:也即能正确接收到值的变量个数. scanf("%d%d", & ...

  3. scanf函数的返回值以及在while循环中的应用

    我们刚开始学习C语言时,经常会使用scanf函数输入参数.但关于scanf函数的返回值你清楚吗? 一.scanf的返回值 scanf函数的返回值分为以下三种情况: 整形,例如我们在用scanf函数进行 ...

  4. C语言scanf()函数的返回值

    C语言scanf()函数的返回值 代码例子: #include<stdio.h> int main(){int num1=0,num2=0;int value= scanf("% ...

  5. [C语言]printf函数和scanf函数的返回值

    先来看一道题 #include<stdio.h> int main() {int a=43;printf("%d\n",a);return 0; } 看完嘴角疯狂上扬, ...

  6. C语言中scanf()函数的返回值

    c语言中简单的输入scanf函数和输出printf函数,我们经常使用,也很熟悉,但有时却还是会在这两个地方犯错. #scanf()函数 功 能: 执行格式化输入 用 法: int scanf(char ...

  7. scanf 函数的返回值

    1. scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数. 例如执行 scanf("%d %d", &a, &b); 如 ...

  8. scanf( )函数的返回值

    当从键盘连续进行输入时用while,但是程序自己不会通过正常的输入结束. scanf("%d%d",&a, &b); 如果a和b都被成功读入,scanf()的返回值 ...

  9. 函数的返回值可以不用赋值_C语言学习|函数的应用《一》

    C语言为程序的结构提供了函数和模块 一.函数的定义与使用 <编程之道>中写道:"一个程序应该是灵活自由的.它的子过程就像串在一根线子上的珍珠."子过程在C语言中被称为& ...

最新文章

  1. 开源游戏机java模拟器_最棒的 7 款开源终端模拟器
  2. 12月8日中科院刘永鑫报告:宏基因组数据分析的机遇与挑战
  3. ES transport client使用
  4. time_t和字符串间的转化
  5. 【arduino】继续用arduino玩CyberPi童芯派之DA音频信号播放
  6. pandas使用get_dummies进行one-hot编码
  7. 11、Libgdx的音频
  8. 案例分析:你造吗?有个ORA-60死锁的解决方案
  9. break和continue区别python_1、Python中break和continue的区别
  10. Jetty 9 正式版发布!
  11. nvm管理node版本
  12. 信号与系统 --- 复指数函数(个人学习笔记)
  13. 黑客X档案的《黑客免杀入门》
  14. Qt界面制作简单教程,调用python代码
  15. MAC: docker compose mount permission denied 挂载失败
  16. 【线性代数】上三角矩阵/下三角矩阵
  17. CommandMethod介绍
  18. 世博版新君威提车作业
  19. Android 音视频配音之音频提取、截断、混音、合并、合成(二)——将提取的PCM根据时间戳截断
  20. 一个自学前端的4年工作总结【三十而立,拒绝躺平】

热门文章

  1. script标签作为模板
  2. Boost库的简介与安装
  3. c++ builder 文件复制 CopyFile
  4. MySQL 学习笔记本2——SQL 语句
  5. SQL之Join的使用详解(附 :分组查询每组前N条记录)
  6. Matlab论文插图绘制模板第84期—极坐标散点图(PolarScatter)
  7. JS实现网页中绘制10x10表格,并在其中区分1-100素数合数。
  8. 计算机应用基础》模拟考试卷一,计算机应用基础模拟试卷(含答案)
  9. Eclipse不自动编译java文件的终极解决方法
  10. 单独使用CCriticalSection对象来同步线程