你用的是vs吧
因为vs安全级别更好一些,使用scanf()函数不检查边界,出现出现内存泄露,如: char a[5]={'\0'}; scanf(“%s”,a),输入0123456789,分配5字节,读取了10字节,只读取前面一部分,后面一部分写到了其他空间;当使用scanf_s()时,需要指定读取大小,如char a[10],scanf_s("%s",a,10),规定读取空间大小。所以vs认为scanf不安全,故要求使用scanf_s等
解决方案
方法一:在程序最前面加#define _CRT_SECURE_NO_DEPRECATE;
方法二:在程序最前面加#define _CRT_SECURE_NO_WARNINGS;
方法三:在程序最前面加#pragma warning(disable:4996);
方法四:把scanf改为scanf_s;.
方法五:无需在程序最前面加那行代码,只需在新建项目时取消勾选“SDL检查”即可;
方法六:若项目已建立好,在项目属性里关闭SDL也行;
方法七:在工程项目设置一下就行;将报错那个宏定义放到 项目属性 -- C/C++-- 预处理器 -- 预处理器定义;
方法八:在 项目属性 -- c/c++ -- 命令行 添加:/D _CRT_SECURE_NO_WARNINGS 就行了。