在家养病,闲着没事看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);

}

运行结果是:

如果输入1 2 3, x = 3;

如果输入1 2 g, x = 2;  (g表示我没按照scanf的格式符%d输入,也就是不符合格式符形式的输入)

如果输入1 g g, x = 1;

如果输入g g g, x = 0;

如果输入g 1 1, x = 0;

如果输入1 g 1, x = 1;

据此,得出的结论是,scanf返回的是到第一个错误的输入形式为止(如果没有那就到结尾呗),所有符合格式符的正确输入的个数。

如果这个结论各位明白,那情况下面一行语句,看i结果是多少?

i=scanf("%d%d%d",&a,&b);

运行结果是:同例子1

此例子中格式占位符%d有三个,对应的输入表项有俩。但是运行时依旧被要求输入三个(windows, DevC++)。输入的第三个整数确实没有承接变量,是被放到了缓冲区里面。但当输入是1 2 3三个正确整数时,返回值仍是3。

这就是需要强调的第二点:scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。而不管你输入表项是否齐全。

Ps:有的编译环境以上操作可能存在问题,比如scanf("%d%d%d",&a,&b); 会出现段错误。这有赖于编译器实现。

所以能理解到的是scanf有可能在不同环境下返回值的情况是不同的,可移植情况是有待考虑的。

而且C语言编程,怎么能看出一个程序员是老程序员,就是他写的程序是否稳定。他们可能忘记了这些具体的细节(具体返回值表示什么),但是他们始终保持不触碰模棱两可的地方。比如这个scanf返回值最多就是判断是否>0,再多则不利用。

VS2019中scanf返回值被忽略的问题及其解决方法

目录 [问题](#昨天在使用Visual Studio 2019编写C语言程序时遇到了scanf返回值被忽略问题) 问题原因 方法① 方法② 方法③ 方法④ 昨天在使用Visual Studio 20 ...

c语言scanf返回值

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

C语言scanf函数返回值小记

scanf scanf是C标准库stdio里面定义的用于获取用户输入的函数,具体的介绍可以在CppReference上看到.scanf的返回值是已经成功赋值的变量个数,也就是说在 scanf(&quo ...

C语言scanf的返回值

#include int main(void) { long num; long sum = 0L; int status; printf("Please e ...

printf与scanf的返回值、注意点

printf()的返回值为其输出字符串常量的字符数(注意字符数与字数的区别)注意计数针对所有的打印字符,包括空格和不可见的换行字符(不包括字符串的空字符). scanf()函数返回成功读入的项目的个数 ...

关于scanf的返回值

今天写一个小程序时误用while(scanf("%d",&b)!=a),以为scanf的返回值就是输入的值. 其实真相是: scanf返回接收到的变量值的个数. int a ...

关于scanf函数的返回值问题

如: scanf("%d%d",&a,&b); 1.如果a和b都被成功读入,则scanf的返回值为2 2.如果只有a被成功读入,那么返回值为1 3.如果a和b都未被 ...

scanf和cin的返回值

需要连续从标准输入读取数据时,可以采用下面两种不同的方式判断文件结束: [cpp] view plaincopy   int i; while(scanf("%d",&i) ...

scanf printf函数返回值

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

随机推荐

vs2010中如何设置Visual Assist方便地使用现成的代码编辑器风格

风格setting可以在下面网站上获取: http://studiostyl.es/ 在VS2010+VA直接使用会有2个显著的问题: 1,有些符号颜色太深,与黑色背景几乎融为一体: 2,光标落入大小 ...

java 编码

编码和解码:无论是解码还是编码都是针对码表来讲的. 编码:将能看懂得字符变为我们看不懂的码值. 字符串--->字节数组 String类的getBytes() 方法进行编码,将字符串,转为对映的二 ...

Core Data

•   Core Data   是 iOS SDK   里的一个很强大的框架,允许程序员 以面向对象 的方式储存和管理数据 .使用 Core Data 框架,程序员可以很轻松有效 地通过面向对象的接口 ...

纯CSS实现圆形进度条

CSS的优点在于的可以随意组合HTML元素来实现许多中效果,这儿我将使用CSS来实现一个运行进度条,效果如下: 思路是用两个div来作为进度条外观,表示进度的div和外面div宽度和高度保持一致,并是 ...

深入解析Oracle 10g中SGA_MAX_SIZE和SGA_TARGET参数的区别和作用

原文链接:http://m.blog.csdn.net/blog/aaron8219/40037005 SGA_MAX_SIZE是从9i以来就有的作为设置SGA大小的一个参数,而SGA_TARGET则 ...

Elasticsearch安装和使用

Elasticsearch安装和使用 Elasticsearch 是开源搜索平台的新成员,实时数据分析的神器,发展迅猛,基于 Lucene.RESTful.分布式.面向云计算设计.实时搜索.全文搜索. ...

uva 348

dp还是比较容易  关键是输出路径 .... #include #include #include #de ...

ECSTORE验证码优化

用ecstore的朋友应该知道,ecstore的验证码超级鸡肋. 特别是字母和数字混合,根本就看不懂写的是什么? 数字还好,但是字母就别提了.而且还小. 索性就把验证码换掉.研究一下发现,ecstor ...

使用JQUERY操作Radio

发展中经常使用Radio为了实现用户的选择的影响.我在该项目中使用的一些JQUERY操作Radio该方法.这里分享,对于有需要的朋友参考的. 1.变化radio选择.引发一些结果 $("in ...

JS深度判断两个对象字段相同

代码: /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype. ...

c语言scanf返回值被忽略,scanf返回值问题相关推荐

  1. C语言 C6031 返回值被忽略scanf

    C6031 返回值被忽略scanf 原因 方法一 方法二 方法三 简单的解决方式 原因 scanf()函数是不安全的(scanf()在读取数据时不检查边界,所以可能会造成内存访问越界).例如: #in ...

  2. c语言中scanf返回值被忽略,返回值被忽略scanf是什么意思

    演示机型:华为MateBook X系统版本:win10 返回值被忽略scanf是因代码中没有使用scanf的返回值,需要用scanf_s函数来代替scanf. 返回值是一个函数的函数名既是该函数的代表 ...

  3. 【C语言入门】VS编译器:scanf返回值被忽略

    一.发现问题 学习C语言中使用VS编译器,期间使用scanf函数会遇到报错警告:返回值被忽略:"scanf"的情况. 二.分析问题 这个问题是因为scanf不检查边界,会引起内存泄 ...

  4. scanf返回值被忽略的原因及其解决方法

    昨天在使用Visual Studio 2019编写C语言程序时遇到了scanf返回值被忽略问题 因为我也是刚开始使用VS2019学习C语言,第一次遇到这种问题,也不知道怎么回事,然后就上Chrome研 ...

  5. scanf返回值被忽略的原因及其解决方法(vs2019)

    在使用Visual Studio 2019编写C语言程序时相信大家都遇见了scanf返回值被忽略这个问题 存在的问题就是scanf函数输入不安全,其实在vs编译器环境下,这种不安全的函数有很多. 为了 ...

  6. 关于vs2022 C6031 “scanf返回值被忽略”的解决办法

    关于vs2022 C6031 "scanf返回值被忽略"的解决办法 我遇到的问题: 在学习c语言的过程中,和教学视频完全一样的代码,但是却在我的编译器里有这样一条警告: 解决办法: ...

  7. scanf返回值被忽略问题

    解决Visual Studio中scanf返回值被忽略问题 最近在使用Visual Studio编写c语言时遇到了scanf返回值被忽略问题 总结了如下几种解决方法: 方法一(不建议) scanf修改 ...

  8. 解决Visual Studio中scanf返回值被忽略问题

    最近在使用Visual Studio编写c语言时遇到了scanf返回值被忽略问题,下面总结了几种解决方法: 总结了如下几种解决方法: 方法一 scanf修改成 scanf_s 可以说scanf_s是v ...

  9. C4996 scanf:This function or variable may be unsafe. / C6031 返回值被忽略.

    C4996 scanf:This function or variable may be unsafe. C6031 返回值被忽略 问题:在VS2019中直接输入 scanf("-" ...

最新文章

  1. php类方法语法错误捕获,php语法错误捕获
  2. javascript中的事件问题的总结
  3. Java开源Web Service(转)
  4. linux 源码安装 yum rpm区别
  5. php单表查询语句,单表查询
  6. iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN after 5 attempt
  7. 最短路--DijkstraFloyedSPFA
  8. 牛客题霸 [在转动过的有序数组中寻找目标值] C++题解/答案
  9. 你的代码可以是优雅的,但是还有更重要的
  10. html中websocket获取数据,如何使用websocket从数据库中获取数据来刷新视图
  11. bios文件查看工具_“主板BIOS教程”手把手教你刷bios,多种bios教程
  12. 【转】Android中Dalvik(DVM)的详解
  13. 机器学习3/100天-多特征线形回归
  14. vue 百度统计_2021暑期实习面经百度篇
  15. cvpr2020 人脸检测与识别_Python人脸检测识别实例教程
  16. Word引用参考文献
  17. 支付宝COM组件浅析
  18. matlab模板,matlab模板匹配
  19. 返乡报备小程序开发制作功能介绍
  20. android x86 win8 双系统,win8.1安卓双系统安装教程:安卓win8.1二合一双系统安装步骤...

热门文章

  1. XWPFTableCell设置字体样式及大小导致的样式问题
  2. 集合论偏序关系的实际运用
  3. Borland Delphi 2005对Delphi语言的支持
  4. 一篇搞懂tracert命令
  5. 在MFC下面实际演示CCriticalSection 的使用
  6. Delphi多平台开发版本选型
  7. 法国宣布对欧盟以外国家关闭边界-我爱无人机网
  8. alin的学习之路(Linux系统编程:一)(Linux基础命令)
  9. 联通iPhone,真的是狼来了?
  10. Python __missing__ 魔法方法