VS中报错C4996 scanf错误&错误介绍&解决方案

在VS中,对于初学者来说存在一些各种意想不到的错误,但比较友好的是新版本中在报错的同时会指出错误地方。以下说说VS2019中 c4996 sacnf报错的解决方法。

操作环境:win10+VS2019

错误代码:C4996


实例说明

 进行报错

 错误分析

严重性

代码

说明

错误

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.

VS认为直接使用C语言定义的函数scanf不安全,而在VS编译器所提供的包括 scanf_s、wscanf_s等以_s结尾版本的函数具有安全增强功能。scanf等函数存在于版本较旧的CRT(C runtime library, part of the C standard library)中,具有安全性问题,比如在读取字符时,若不指定%s的宽度,可能会导致缓冲区溢出。


解决方案 

1.使用VS中所推荐使用的方法 将scanf改为scanf_s

 显示运行成功

存在问题:虽然说这种方式可以解决问题,但是实际上scanf是c语言提供的函数,可以使用大多数的编译器,而scanf_s这个函数只是VS编译器提供的一个它自身认为安全的一个版本,在其他编译器下不一定适用,不能跨版本使用。

2.屏蔽出4996错误,即在头文件之前加上以下一行代码#pragma warning(disable:4996)

 显示运行成功

存在问题:每次新建一个项目都需多加一行代码,增加工作量。

        不过也可以通过设置一个文件,里面包含这一串代码,在新建时就不用输入

                1.打开visual studiod的安装位置。我用的是visual studio 2019。目录在:E:Microsoft                 Visual Studio2019PreviewCommon7IDEVCVCProjectItems

                2.VCProjectItems下的newc++file.cpp文件用NotPad++或者editplus方式打开,添加上                 #define _CRT_SECURE_NO_WARNINGS 1,然后保存,下一次创建的时候就不需要在手动加入。

3.同第二个方法,加上一串屏蔽代码#define _CRT_SECURE_NO_WARNINGS 1

 希望对你有所帮助~

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>