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

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

2021-9-25 18:35
3258

问题描述:
在使用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,

段落引用


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 583
活跃值: (997)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
牛哇
2022-3-25 19:44
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
第三种可以屏蔽4996错误!
2022-3-25 20:27
0
雪    币: 3297
活跃值: (5395)
能力值: ( LV6,RANK:92 )
在线值:
发帖
回帖
粉丝
4
第四种可以关闭SDL检查
2022-3-25 20:31
0
雪    币: 6124
活跃值: (4646)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
为什么不用宏控制呢 ifdef 
2022-3-25 21:40
0
游客
登录 | 注册 方可回帖
返回
//