scanf 返回值_scanf函数

3ef50cca1b471bb506ed714097c7a5ab.png

一、函数

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

函数的原型为:

int scanf(const char * restrict format, ...);

函数的第一个参数是格式化字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所值位置,每一个指针要求非空,并且与字符串中的格式一一顺次对应。

格式化字符串参考:

printf函数——二、Format​zhuanlan.zhihu.com
af380cf4888ae76f6fb128a722250d2f.png

补充:%[] 扫描字符集合。

函数返回值为整型。如果成功,返回成功匹配和赋值的个数;如果到达文件末尾或发生读错误,则返回EOF。

如:scanf(“%d%d”, &a, &b);

如果只有a被成功读入,返回值为1;如果a和b都未被成功读入,返回值为0;如果遇到错误或遇到end of file,返回值为EOF。


二、注意事项

  1. scanf的双引号内永远不要加“非输入控制符”。除了“输入控制符”之外,什么都不要加,否则就是自找麻烦,而且对于用户而言,肯定是输入越简单越好。在scanf中,所有的“非输入控制符”都必须要原样输入;
  2. 参数的个数一定要对应。无论在顺序上,还是在个数上,一定要一一对应;
  3. 输入的数据类型一定要与所需要的数据类型一致,对于输入的数据类型是用户输入的,所以在写程序时要考虑容错处理;
  4. 在使用scanf之前使用printf提示输入,可以大大提高代码的质量。

三、实战

1. 警告 C6031 返回值被忽略:“scanf”。

原因:参考scanf函数返回值。

解决方案:

(1)采用以_s结尾的安全版本(推荐);

(2)根据scanf函数返回值判断用户输入是否合法,作出相应处理。

2. 错误 C4996 ‘scanf’:This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

原因:这种微软的警告,主要因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类),微软担心使用这些会造成内存异常,所以就改写了同样功能的函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉相应的安全函数,查看警告信息就可以获知,在使用时也在查看一下MSDN详细了解。

解决方案:

(1)采用以_s结尾的安全版本(推荐);

(2)在头文件包含的最前面(在include的前面)加上:#define _CRT_SECURE_NO_WARNINGS;

(3)在头文件包含的最前面(在include的前面)加上:#pragma warning(disable:4996);

(4)通过以下步骤:调试->属性->C/C++->预处理器->预处理器定义->编辑->输入“_CRT_SECURE_NO_WARNINGS”->确定。

8a30c7b1abe499bd804a72832b05eb3c.png
(4)第一、二步

0d618230499acd8ae7de56132d4826a8.png
(4)第三、四、五、六步

49bfcbaa43a90801571e1d97853e81db.png
(4)第七、八、九步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git】Git-常用命令备忘录(三)

git作为一个vcs&#xff08;version control system&#xff09;&#xff0c;是越用越香&#xff0c;那么还有哪些比较香的地方呢&#xff01;&#xff1f;1.远程仓库中拉取指定分支一定遇到这种情况&#xff0c;github看到一个心仪的开源仓库&#xff0c;但是分支太多&#xf…

mysql表类型_MySQL表类型的选择

P131)创建表时的默认引擎是InnoDB&#xff0c;如果要修改默认的存储引擎&#xff0c;可以在参数文件中设置default-table-type。查看当前的默认存储引擎&#xff0c;可以使用一下命令&#xff1a;创建新表的时候可以通过增加ENGINE关键字设置新建表的存储引擎。也可以通过ALTER…

ASP.NET Core Controller与IOC的羁绊

前言看到标题可能大家会有所疑问Controller和IOC能有啥羁绊&#xff0c;但是我还是拒绝当一个标题党的。相信有很大一部分人已经知道了这么一个结论&#xff0c;默认情况下ASP.NET Core的Controller并不会托管到IOC容器中&#xff0c;注意关键字我说的是"默认"&#…

引入Jaeger——扩展

Jaeger是收集全链路跟踪的信息&#xff0c;在Jaeger收集的信息中&#xff0c;有请求的url信息&#xff0c;有每个请求的时间间隔&#xff0c;借助这些信息可以进行报警&#xff0c;比如一次较长的请求&#xff0c;或者是某些请求的次数和先后等。不管报警的业务规则是什么&…

判断 服务器架构性能 数据,服务器架构之性能扩展-第五章(6)

Mysql>create table t2 like t1;//复制表结构Mysql>insert into t2 select * from t1; //复制数据内容索引是一种快速查询的有效方法&#xff0c;可以通过alter增加索引或create语句创建。mysql>alter table t1 add ind_id (id);mysql>alter table t1 add unique/p…

如何在 ASP.NET Core 中 使用 功能开关

.NET Core 中的 功能管理 (Feature Management) 包可用于实现 功能开关&#xff0c;什么意思呢&#xff1f;就是可以通过 功能开关 特性动态的改变应用程序的行为而不需要改变任何的业务逻辑代码&#xff0c;听起来是不是挺有意思&#xff0c;本篇我们就来讨论如何使用这个包。…

「译」 .NET 5 新增的Http, Sockets, DNS 和 TLS 遥测

.NET 一直在稳定的增加和改善对应用程序进行跨平台的诊断分析&#xff0c;在.NET Core 3.0&#xff0c; 我们看到了 EventCounters[1] 的介绍&#xff0c;用于观察和分析指标测量。我最近在几个 .NET Core 的应用程序中使用 counters&#xff0c;来跟踪服务一段时间内 http 的请…

服务器磁盘系统,服务器磁盘阵列与操作系统

服务器磁盘阵列与操作系统 内容精选换一换硬件要求如表1所示。操作系统要求如表2所示。上表中所需Ubuntu下载地址&#xff1a;服务器1&#xff1a;Ubuntu 18.04.1镜像包、Ubuntu 16.04.4 镜像包。服务器2&#xff1a;Ubuntu 16.04.3 镜像包。在安装操作系统过程中“选择软件列表…

Prism for WPF 搭建一个简单的模块化开发框架

站长今天发现一个好项目&#xff0c;看原文贴图挺不错的&#xff0c;好项目应该让更多人知道&#xff0c;特别是该项目使得Prism搭建&#xff0c;网上使用prism做的开源成熟项目不多&#xff0c;这个值得大家研究。看项目gitee仓库截图&#xff0c;项目不错&#xff0c;star太少…

探索 .Net Core 的 SourceLink

介绍Source Link是一组软件包和一个规范&#xff0c; 它将一些元数据添加到PDB文件&#xff0c;以将本地文件重新映射到GitHub上的文件&#xff0c;因此Visual Studio可以在这需要时下载文件, 该项目的目的是可以为使用Nuget安装软件的用户提供源代码调试, Microsoft库&#xf…

「译」 用 Blazor WebAssembly 实现微前端

原文作者: Wael Kdouh原文链接&#xff1a;https://medium.com/waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325我聊下最近我在做的事情&#xff0c;然后分享下在Blazor WebAssembly 微前端的实现细节&#xff0c;这篇文章是我的一些心得&#xff0c;以及一个示…

使用 dotnet-monitor 分析.NET 应用程序

dotnet-monitor 是 .NET Core 命令行接口 (CLI) 工具, 可以很方便的在dotnet环境中分析我们的应用程序&#xff0c;需要注意的是&#xff0c;目前它还只是一个实验性的工具在这之前&#xff0c;我们使用的有 dotnet-counters&#xff0c;dotnet-dump 和 dotnet-trace&#xff0…

mysql数据库查看用户名_mysql怎么查看用户名?

我们在使用mysql的时候&#xff0c;有时候需要来查看当前用户。本篇文章将和大家讲述mysql怎么查看用户名&#xff0c;感兴趣的朋友可以了解一下。启动数据库&#xff1a;[rootserver ~]# mysqld_safe &[1] 3289[rootserver ~]# 130913 08:19:58 mysqld_safe Logging to /u…

如何实现 ASP.NET Core WebApi 的版本化

Web API 的版本化可以尽量保证在相同url情况下保留一个 api 的多个版本&#xff0c;通常一个 webapi 会有多个client&#xff0c;这些client包括&#xff1a;app&#xff0c;web&#xff0c;html5&#xff0c;crawl 等等同构或者异构的平台&#xff0c;当 api 升级之后&#xf…

mysql查询重复的名字_Mysql中like用法:查询名字中含有风字的学生信息

一、表名和字段–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号&#xff0c;学生姓名&#xff0c;出生年月&#xff0c;学生性别–2. 课程表 course (c_id,c_name,t_id) –课程编号&#xff0c;课程名称&#xff0c;教师编号–3. 教师表 teacher (t_id,t_name) –…

一次Task.Run异常问题的排查

最近在测试一个功能代码时发现一个非常奇怪的问题&#xff0c;主要是Task.Run引起一些不符合逻辑的错误&#xff0c;以下针对这一问题排查的总结。问题代码可以建个控制台程序来运行以下代码class Program{static User user new User();static void Main(string[] args){for (…

git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

简介折腾了两个晚上&#xff0c;趁着今晚比较有空&#xff0c;把jenkinsgitmaven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp)系统&#xff1a;centos6.5maven: Apache Maven 3.3…

在.NET Core 中收集数据的几种方式

APM是一种应用性能监控工具&#xff0c;可以帮助理解系统行为, 用于分析性能问题的工具&#xff0c;以便发生故障的时候&#xff0c;能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据&#xff0c;分析业务系统各事务处理的交易路径和处理时间&#xff0c;实现对应…

java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...

上述五个jar包缺一不可下载解压后,进入解压出的文件夹将这五个jar包复制出来放入自己创建的myJar文件夹中(myJar文件夹创建与说明)接下来就可以在工程中进行使用package utils;import com.mysql.cj.jdbc.Driver;import org.apache.commons.dbcp2.BasicDataSource;import java.s…

C# 在自定义的控制台输出重定向类中整合调用方信息

C# 在自定义的控制台输出重定向类中整合调用方信息目录C# 在自定义的控制台输出重定向类中整合调用方信息一、前言二、输出重定向基础版三、输出重定向进阶版&#xff08;传递调用方信息&#xff09;四、后记及资源独立观察员 2021 年 1 月 6 日一、前言众所周知&#xff0c;在…