欢迎光临
我们一直在努力

scanf缺少返回值,scanf的返回值被忽略是什么意思

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

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

问题原因

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

方法①

把scanf改成scanf_s

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

方法②

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

关闭步骤右键“项目文件” —— “属性” —— “配置属性” ——“C/C”——“常规”——“SDL检查”改为“否”即可如图所示 改为否后再次编译就没问题了。

方法③

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

//全部关掉

或者

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

//仅显示一个

方法④

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

//忽略安全检测 每次都要加这么一串代码的话是不是感觉有点费力我一开始找到这种方法的时候第一感觉也是这样的

其实不用那么麻烦我们只需要在VS中加入 _CRT_SECURE_NO_WARNINGS 这个宏就可以了具体操作如下图所示 一次搞定后面都不用再弄了。我个人偏向于第④种方法。

15560393

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。