VisualStudio2019解决scanf函数报错问题
作者:Duck Bro
一、问题由来
在 Visual Studio 2019 编辑代码时,前期刚刚接触到VS编译器时存在的困惑,当用scanf()
函数,进行输入时,在运行的时候编译器会出现警告报错。如下图情况
二、为何会存在这个问题
在Visual Studio 2019中,scanf函数会被标记为不安全的函数,因为它没有检查输入缓冲区的大小。如果输入缓冲区不够大,scanf函数可能会导致缓冲区溢出,从而引发安全漏洞。
三、解决方法
方法1(scanf_s)不推荐
为了避免这个问题, VS编译器中可以使用scanf_s
函数代替scanf
。scanf_s函数具有相同的参数和行为,但添加了一个额外的参数,用于指定输入缓冲区的大小。例如,要读取一个整数,您可以这样使用scanf_s函数:
int num; if (scanf_s("%d", &num) != 1) { // scanf_s失败,处理错误 }
注意:如果您还想使用scanf函数而不是scanf_s函数,请在项目的属性中启用“CrtSecureWarnings”选项,该选项将禁用scanf函数的警告。
方法2(#define _CRT_SECURE_NO_WARNINGS 1)推荐
在文件的最顶端输入以下代码
#define _CRT_SECURE_NO_WARNINGS 1
注意一定得是文件最开头的地方 !!!
因为在编程时常常会使用到 scanf
函数,为了解决每次编程时都需要在开头写这条会很繁琐
以下是解决方法
在新建.c文件时自带 #define _CRT_SECURE_NO_WARNINGS 1
先下载这个软件 旁边是 Everything官网地址
运行Everything,在搜索框里查找这个文件 newc++file.cpp
右击打开路径
复制该文件到桌面,用vs2019打开进行修改
将这段代码 #define _CRT_SECURE_NO_WARNINGS 1
复制到文件中
将这个文件保存到步骤4.的路径中,替换本来的文件
这样就在新建文件时,就有这行代码啦
总结
在学习C语言的初期,经常遇到scanf函数报错问题,建议使用方法2,方法1的scanf_s是在VS编译器中有,使用时如果在其他编译器运行时可能会出错,所以建议使用方法2,#define _CRT_SECURE_NO_WARNINGS 1
到此这篇关于VisualStudio2019解决scanf函数报错问题的文章就介绍到这了,更多相关VS2019 scanf报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!