一、问题再现

如下是笔者在学习数据结构中的二叉树时遇到的问题:

报错警告:返回值被忽略:"scanf"。

二、问题分析

百度一下之后大致原因是:scanf()函数在读取时不检查边界,所以可能会造成内存泄漏。有一定的安全隐患。例如代码是

char a;
scanf("%c",&a);

scanf只有一个%c,当你输入两个以上的字符时,就会发生内存溢出。

微软公司觉得其不安全,所以在VS编译器中提供了scanf_s()函数,这是VS编译器特有的函数。强制用户提升安全性,如果想要在VS中使用scanf()函数,则可以通过以下四种方法解决。

三、解决方案

1、把scanf改成:scanf_s

把所有的scanf()改写成scanf_s(),但是scanf_s()是VS编译器特有的函数,写了此函数之后在别的编译器上就无法执行,使得代码的可移植性和跨平台性变得极差,不推荐使用。

2、关闭VS的SDL安全检查

点击应用确定之后,程序正常运行

3、在程序开头添加命令

在程序开头添加

#pragma warning(disable:4996)

或者

#pragma warning(once:4996)

可以看到,程序已经可以正确运行,即使警告提示还有。

4、添加宏定义

在项目文件开头添加宏定义,来忽略安全检查

#define _CRT_SECURE_NO_WARNINGS

或者

在预处理中编辑宏,相当于每次执行程序时,编译器自动帮你执行,省去了自己要在文件开头定义宏的麻烦

又或者

在VS2019安装路径找到 "newc++file.cpp" 这个文件,右键记事本打开,输入上面的

#define _CRT_SECURE_NO_WARNINGS

命令,保存,这样以后每次新建.c++源文件的时候这行代码就会自动出现在第一行。

【注意】如果在保存的时候出现“拒绝访问”的情况,可以测试下载安装一个工具“Notepad++”,然后以管理员的身份运行这个软件,用这个软件打开上面提到的“newc++file.cpp”文件,复制粘贴代码上去后,保存即可。

VS2019:scanf返回值被忽略相关推荐

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

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

  2. c语言scanf返回值被忽略,scanf返回值问题

    在家养病,闲着没事看C primer plus,看到书中对于scanf输入的判断,常用如下方法: 此时它将返回1视为我输入成功,如果不为1则视为输入失败.那到底scanf的返回值具体指的是什么呢? 例 ...

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

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

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

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

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

    相信有不少人在使用vs的时候会遇到以下这个问题:scanf返回值被忽略,接下来我就告诉大家该如何解决这个问题 出现问题的原因:   因为scanf()在读取数据时不检查边界,所以可能会造成内存泄漏.M ...

  6. scanf返回值被忽略问题

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

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

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

  8. scanf返回值被忽略如何解决?

    问题图: 解决办法: 在第一行写入:#define _CRT_SECURE_NO_WARNINGS1即可 具体产生的原因和多种解决办法可以推荐一个非常详细的博主,链接如下:(3条消息) scanf返回 ...

  9. VS2022 scanf返回值被忽略怎么办

     scanf返回值被忽略怎么办,掌握了这个办法后,就再也不会有这个苦恼啦. 先在vs的安装路径里找到:newc++file.cpp文件,然后点击鼠标右键找到文件所在位置. 找到文件所在的位置后将该文件 ...

最新文章

  1. win10 error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
  2. 图解Spring解决循环依赖
  3. 使用autoconf完成编译配置
  4. php 调用url field,使用 PHP curl 调用 API,如何传递如下格式的 POSTFIELD?
  5. python深拷贝和浅拷贝的使用场景_深拷贝、浅拷贝的理解与使用场景
  6. AS3.0开始类库依赖出现了四种新语法
  7. @Resource,@Autowired,@Inject3种注入方式详解
  8. rust怎么拆除墙壁指令_人类跌落梦境:城堡怎么过 不少玩家卡在了第六关城堡地图这里...
  9. 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
  10. 单元测试的思考与实践
  11. 「opennurbs」我直接进行一个Opennurbs的手动编译
  12. 智能(个性化)推荐系统全流程落地实施方案
  13. 办公室电脑怎么设置共享文件夹?
  14. 通过AVAudioRecorder获取麦克风接收分贝
  15. Chrome 图片批量下载扩展—— zzllrr Imager(小乐图客)
  16. 数据结构 - 逻辑结构和存储结构
  17. QQ能联网但是电脑上所有的浏览器都不能上网
  18. git clone公司项目的代码到本地
  19. 带桌面推送Ai智能客服系统在线客服源码
  20. java基础篇-来源于微信公众号[java知音]

热门文章

  1. Jetson nano 的语音
  2. Worke Service 错误 1053: 服务没有及时响应启动或控制请求
  3. pyhton输油管问题
  4. 不断发展的5G MIMO网络和虹科测试方案
  5. 毛哥的快乐生活(14) 界面全面升级赢得广泛赞誉
  6. UI自动化+web测试基础3-2,京东流程
  7. 矩阵论笔记(三)——欧氏空间与正交变换
  8. python定时爬虫三种方法_Python爬虫定时计划任务的几种常见方法
  9. 分享 19 个免费好用的 CSS 代码样式生成器工具
  10. 同一个编译脚本下 arm 交叉编译 生成文件大小不一致的问题分析