VS编译器中scanf函数errorC4996

初学者在使用VS2013在运行程序是出现错误errorC4996,是什么原因怎么解决。

实例

错误原因

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

解决办法

1.按照给的提示可以考虑改用scanf_s。我们测试下。

毕竟scanf是C语言的正确函数,不是错误函数,那我们程序复制到别的平台来回改动很不方便也容易产生错误。我们怎么解决在VS2013中用scanf函数呢?

2.可以用添加头文件解决#pragma warning(disable:4996)

不过每个新建项目都需要添加屏蔽很麻烦。

3.我们还可以用错误说明里的第二种方式解决,用#define _CRT_SECURE_NO_WARNINGS。方法如下:

  • 在VS安装包路径D:\vs 2013\vs2013AZ\VC\vcprojectitems,vcprojectitems中的newc++file.cpp打开添加 #define _CRT_SECURE_NO_WARNINGS并保存

  • 重新建项目就会自动添加#define _CRT_SECURE_NO_WARNINGS。(必须重新新建项目才会出现)

  • 重新写入程序代码并运行。

运行成功,一劳永逸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值