首页
社区
课程
招聘
[分享][讨论]在使用VS2017编写代码时,使用scanf 报错,解决办法
2021-9-25 18:35 2997

[分享][讨论]在使用VS2017编写代码时,使用scanf 报错,解决办法

2021-9-25 18:35
2997

问题描述:
在使用VS2017编写代码时,出现如下错误:

 

error 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。详情见在线帮助。

 

问题解决:
方法一(假设仅在VS上编程)
如果只使用VS编写代码,那么还是使用函数scanf_s比较好,毕竟安全可靠,而且使用难度也没大很多。

 

方法二 (假设不止使用VS编程)
如果编写的代码需要移植到其他IDE上,由于函数scanf_s是VS特有的,其他IDE将不认识这个函数,从而报错。如果在VS上仍希望使用函数scanf,可以采取以下3种手段。

 

一 在VS上编程时,第一行首先写上如下语句。

 

#define _CRT_SECURE_NO_WARNINGS
此后,可正常使用函数scanf。系统将不会报错。如下代码。

 

#define _CRT_SECURE_NO_WARNINGS

 

#include <stdio.h>

 

int main()
{
int x;
scanf("%d", &x);

1
2
3
4
5
printf("%d\n", x);
 
system("pause");
 
return 0;

}
二 如果不想在第一行输入该语句,也可以在VS的项目属性中进行配置,这样,在整个项目中都可以正常使用函数scanf。配置的步骤如下:

  1. 找到菜单栏的项目→项目的属性→C/C++→预处理器

  2. 右侧有个预处理器定义,在其参数中加上 _CRT_SECURE_NO_WARNINGS,

段落引用


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 352
活跃值: (472)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
mb_kbkqyusp 2022-3-25 19:44
2
0
牛哇
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sYstemk1t 2022-3-25 20:27
3
0
第三种可以屏蔽4996错误!
雪    币: 3155
活跃值: (5160)
能力值: ( LV6,RANK:92 )
在线值:
发帖
回帖
粉丝
0xC5 1 2022-3-25 20:31
4
0
第四种可以关闭SDL检查
雪    币: 6124
活跃值: (4141)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 1 2022-3-25 21:40
5
0
为什么不用宏控制呢 ifdef 
游客
登录 | 注册 方可回帖
返回