前言
当我们的代码出现这样的报错时,不要慌张。应该是你用了scanf、strcyp、strlen、strcat.
'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
一、为什么用了scanf、strcyp、strlen、strcat等函数会报错?
函数调用的时候需要建立栈帧,函数返回的时候会清除栈帧,在栈帧中会为函数局部变量(如数组)开辟空间。如果scanf 输入一个字符串超过了局部数组的大小,可能造成栈帧的破坏,函数无法正常返回,从而出现bug。这仅从程序员的细心是很难控制的,当程序变大的时候就会出现意想不到的麻烦。简单来说编译器认为这些函数不安全,必须提供一个数字以表明最多读取多少位字符,使用scanf_s等后面加个_s就不会报错。
scanf是C语言提供的,而scanf_s是VS编译器提供的,若使用scanf_s,则代码可移植性和跨平台性会变得较差,不建议使用。其实还有更方便的方法,就是声明这些VS认为不安全的函数是安全的就行了。
。
二、操作步骤
1.下载notepad++
链接:https://pan.baidu.com/s/1GtRJJjbXs44I9c54pmplHQ
提取码:zk4r
2.修改
在VS安装目录中找到newc++file.cpp,使用notepad++打开,然后输入#define _CRT_SECURE_NO_WARNINGS 1 并且保存即可。下次打开VS 第一行会自动有这一句代码。
总结
这个报错并不重要,写入声明即可解决。