首先,先看下错误提示:
这是因为scanf在读取数据时不检查边界,所以可能会造成内存泄漏。Microsoft公司觉得这个函数不安全,于是自己在VS编译器中提供了scanf_s这个函数,这个函数提供了边界限制。但是如果我们使用了scanf_s,我们的代码就不跨平台了。解决的方法有3种。
方法1:
在我们要使用scanf的.c(c)或.cpp(c++)文件的第一行添加一行代码,这个1可有可无,目的是预编时处理一下,加个宏而已,让其忽略安全检测。
#define _CRT_SECURE_NO_WARNINGS 1
方法2:
在我们要使用scanf的.c(c)或.cpp(c++)文件中添加代码,这是为了让某个警告或者错误失效。
#pragma warning(disable:6031)
上面两种方法,每写一个文件就得手动加,比较繁琐。下面介绍一劳永逸的方法。
方法3:
在vs文件中有一个newc++file.cpp文件,我们要找到它,找不到的可以下载一个软件来帮我们快速查找,下载链接放着:下载 - voidtools。找到后记得先自己手动保存一份,以防万一。我们把它复制一份并把后缀修改为txt,再打开并添加代码,最后把文件后缀改回原来的并移动到原来的文件路径下替换原来的文件即可。这样我们之后创建文件的时候它会自己在文件第一行添加改代码。
#define _CRT_SECURE_NO_WARNINGS 1