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

 更新时间:2021年04月13日 10:16:11   作者:莫须有?  
这篇文章主要介绍了VS2019中scanf返回值被忽略的问题及其解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

昨天在使用Visual Studio 2019编写C语言程序时遇到了scanf返回值被忽略问题

因为我也是刚开始学习C语言,第一次遇到这种问题,也不知道怎么回事,然后就上Chrome研究了一番,才知道原因,并且找到了几种分散在个个角落的解决方法,我在这里归纳总结一下。

问题原因:

在ANSI C中只有scanf(),没有scanf_s(),但是scanf()在读取时不检查边界,所以可能会造成内存泄漏。于是Microsoft公司在VS编译器中提供了scanf_s(),如果想继续使用scanf这个不安全的函数,可以通过以下方法解决。

方法①:

把scanf改成:scanf_s

这是VS编译器特有,既然觉得scanf()不安全,那它就自己定义了一个scanf_s()。


其实我是不推荐大家使用这种方法的,因为scanf_s它是vs编译器特有的,也就是说它不具有跨平台性/可移植性,在其他编译器上无法识别运行

方法②:

编译器错误提示的原因至于VS中的SDL检查,只需要找到它并关闭就可以了。

关闭步骤:右键“项目文件” —— “属性” —— “配置属性” ——“C/C++”——“常规”——“SDL检查”改为“否”即可,如图所示

改为否后,再次编译就没问题了。


方法③:

在C语言程序开头添加代码: #pragma warning(disable:4996)//全部关掉

(或者)

在C语言程序开头添加代码: #pragma warning(once:4996)//仅显示一个


方法④:

在C语言程序开头添加代码: #define _CRT_SECURE_NO_WARNINGS//忽略安全检测

每次都要加这么一串代码,是不是感觉有点费力??(我一开始找到这种方法的时候第一感觉也是这样的)

其实不用那么麻烦,这里还可以细分为两种方法:

(1)我们只需要在VS中加入 _CRT_SECURE_NO_WARNINGS 这个宏就可以了,具体操作如下图所示:

(2)在VS2019的安装路径下找到“newc++file.cpp”这个文件,用记事本的方式打开,并把这行代码复制粘贴上去,然后保存即可,这样以后每次新建.c源文件的时候这行代码就会自动出现在第一行。

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

最后提到的这两种都是一次搞定,后面都不用再弄了。

我个人偏向于方法④的第(1)种方法。我也比较推荐你使用这种方法——毕竟简单而且可以说是一劳永逸

到此这篇关于VS2019中scanf返回值被忽略的问题及其解决方法的文章就介绍到这了,更多相关VS2019 scanf返回值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 前端vscode必备插件推荐(开发必备)

    前端vscode必备插件推荐(开发必备)

    VSCode是我们前端开发的一个强大的IDE,因此选择趁手好用的插件能事半功倍,也能能更好地编码以及获得更丝滑的开发体验,这篇文章主要给大家介绍了关于前端vscode必备插件推荐的相关资料,需要的朋友可以参考下
    2023-11-11
  • 都2019年了,还问http中GET和POST的区别

    都2019年了,还问http中GET和POST的区别

    最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 get 和 post 的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的区别
    2019-02-02
  • 初探 SOA

    初探 SOA

    SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL, Web Services Description Language)是用于描述服务的标准语言。
    2009-01-01
  • Hadoop介绍与安装配置方法

    Hadoop介绍与安装配置方法

    这篇文章主要介绍了Hadoop介绍与安装配置教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • 计算机程序设计并行计算概念及定义全面详解

    计算机程序设计并行计算概念及定义全面详解

    最近项目需要实现程序的并行化,刚好借着翻译这篇帖子的机会,了解和熟悉并行计算的基本概念和程序设计,有需要的朋友可以借鉴参考下
    2021-11-11
  • 支付宝 接口开发帮助(asp,php,asp.net,jsp)

    支付宝 接口开发帮助(asp,php,asp.net,jsp)

    支付宝的接口开发使用的技术含量并不高!因为使用的是HTTP普通GET和Post方式传递数据,而这些数据是传给您的程序由您的程序任意处理和支付宝服务器处理,所以重点在再流程和传参!
    2009-06-06
  • win10环境安装kettle与linux环境安装kettle的详细过程

    win10环境安装kettle与linux环境安装kettle的详细过程

    kettle是一款免费开源的、可视化的、国际上比较流行的、功能强大的ETL必备工具,在ETL这一方面做的还不错,下面介绍一下基于win10操作系统安装kettle和linux操作系统安装kettle的详细过程,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • 最新IntelliJ IDEA 2020.2永久激活码(亲测有效)

    最新IntelliJ IDEA 2020.2永久激活码(亲测有效)

    今天一大波朋友反馈idea2020激活码失效的问题,小编快马加鞭给大家找到解决方案,本文以IDEA 2020.2.4激活码破解教程为例给大家详细介绍,需要idea2020激活码的朋友快来参考下本文吧
    2020-11-11
  • 关于idea+centos7+zookeeper报错connectionloss,timeout问题

    关于idea+centos7+zookeeper报错connectionloss,timeout问题

    这篇文章主要介绍了idea+centos7+zookeeper报错connectionloss,timeout问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 分布式医疗挂号系统整合Gateway网关解决跨域问题

    分布式医疗挂号系统整合Gateway网关解决跨域问题

    这篇文章主要介绍了分布式医疗挂号系统整合Gateway网关解决跨域问题,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04

最新评论