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 Studio\2019\Preview\Common7\IDE\VC\VCProjectItems

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

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

 希望对你有所帮助~

  • 20
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值