• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

其他 阿峰学长 1673次浏览 0个评论

目录

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

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

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

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

问题原因:

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

方法①:

把scanf改成:scanf_s

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

VS2019中scanf返回值被忽略的问题及其解决方法
其实我是不推荐大家使用这种方法的,因为scanf_s它是vs编译器特有的,也就是说它不具有跨平台性/可移植性,在其他编译器上无法识别运行

方法②:

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

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

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

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

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

方法③:

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

//全部关掉

(或者)

在C语言程序开头添加代码:#pragma warning(once:4996)

//仅显示一个

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

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

方法④:

在C语言程序开头添加代码:#define _CRT_SECURE_NO_WARNINGS

//忽略安全检测

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

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

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

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

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

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

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

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

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

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

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


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明VS2019中scanf返回值被忽略的问题及其解决方法
喜欢 (0)

您必须 登录 才能发表评论!

加载中……