一、问题再现

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

报错警告:返回值被忽略:"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. 5G 在地空通信网络中的需求
  2. 石油大c语言答案,中国石油大学C语言答案
  3. 数据库基础知识——DDL语言
  4. Bytom的链式交易和花费未确认的交易
  5. nginx模块使用详解
  6. Python 创建本地服务器环境生成二维码
  7. 大众点评产品分析报告
  8. 谷歌最新版本浏览器如何兼容flash插件
  9. UVA1629 切蛋糕 Cake slicing 题解
  10. caffe 训练笔记总结
  11. 出海推荐 (出海服务器盘点)
  12. 4567: [Scoi2016]背单词 trie+贪心
  13. Eclipse Memory Analyzer,内存泄漏插件,安装使用
  14. 高数复习(2)--方向导数与梯度的理解 附根据梯度求轨迹的基本模型
  15. 搭建文字转语音(TTS)服务器
  16. 动态规划(DP)01
  17. ctrl跳转失败 studio uap_uap进不去,重装studio和uap都不能行,请大神给看看
  18. YGG 与 Web3 平台 Strider 达成合作,用 DAO 工具和资源为创作社区赋能
  19. iOS开发基本功的那些事儿(未完待续)
  20. philips 968 也可以telnet

热门文章

  1. Android 软键盘不能弹出
  2. chinanet免费wifi登陆器
  3. Arduino Uno WiFi rev 2开发板
  4. CIKM Competition数据挖掘竞赛夺冠算法-陈运文
  5. Java面试-String、StringButtfer和StringBuilder之间的区别
  6. Android开发重点难点1:RelativeLayout(相对布局)详解
  7. keras采用LSTM生成尼采风格文章
  8. java enum valueof_Java 解决Enum.valueOf找不到枚举出现的异常
  9. Linux操作系统基础之软件管理
  10. 如何 修改服务器控件的text,设置TextBox控件的TextMode属性