如图,在VS系列中直接使用scanf函数会报以下错误,怎么解决呢?
那接下来我们看一下报错信息
C4996 '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”这个函数或者变量不安全,考虑使用scanf_s 去替换。让这个描述失效的话,使用_CRT_SECURE_NO_WARNINGS.。有关详细信息,请参阅联机帮助(最后一句为百度翻译,不过并不重要,可忽略不计)
那么它就给了我们两个解决方案:
1. 用scanf_s代替,如下图
此时它是可以正常运行的。但要注意一定问题,scanf_s其实与scanf是有一定区别的。
也存在一定缺点:scanf_s是VS自带的函数,其它编译器不支持,不可跨平台使用。
2.报错同样提示我们,可以在文件第一行加上#define _CRT_SECURE_NO_WARNINGS 1
而加上它后,函数此时便可以正常运行
那么我们会发现,每次打开一次源文件都需要再加一次#define _CRT_SECURE_NO_WARNINGS 1
接下来我们将介绍一种一劳永逸的办法:
打开everything,搜索下图文件
newc++file.cpp
右键文件后点击打开路径
我们将会进入到这个界面(没有everything的朋友也可以通过以上路径寻找)
然后右击该文件,打开方式,以记事本形式打开进入如图页面后将#define _CRT_SECURE_NO_WARNINGS 1导入,再保存
可能有些电脑会因为管理员权限无法修改,此时我们仅需将该文件复制后移至桌面,就拥有了修改权限,修改后再将文件移回原位替换原有文件。那么接下来再次打开VS新建源文件,第一行就会自动出现这句话了,此时scanf便可正常使用。