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

scanf返回值被忽略的原因及其解决方法VisualStudio 编写 C 语言程序时 scanf 返回值被忽略问题 scanf 返回值被忽略的解决方法在 ANSIC 中只有 scanf 没有 scanf s 但是 scanf 在读取时不检查边界 所以可能会造成内存泄漏 于是 Microsoft 公司在 VS 编译器中提供了 scanf s 如果想继续使用 scanf 这个不安全的函数

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

1

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

问题原因:

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

方法①:

把scanf改成:scanf_s

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

3

方法②:

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

方法③:

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

//全部关掉

(或者)

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

方法④:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200288.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:09
下一篇 2026年3月20日 上午11:09


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号