一、问题描述

今天在Visual Studio 2019中写一段C语言的代码,发生生成错误。弹框如下:


点击【否(N)】,提示如下:


错误具体信息为:

错误   C4996   'fscanf': This function or variable may be unsafe.
Consider using fscanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.

二、解决问题

2.1 使用fscanf_s函数替代fscanf函数

如上面的错误提示,

错误   C4996   'fscanf': This function or variable may be unsafe.
Consider using fscanf_s instead.

我们可以使用fscanf_s函数替代fscanf函数。 没啥好说的,按照提示来,一个一个改。

但是这个解法也有局限,因为:scanf函数是C语言提供的,而scanf_s不是标准C语言提供的,而是VS编译器提供的,只有VS这个编译器能识别出来,当我们换个编译器时(譬如:GCC),那么GCC就不认识scanf_s这个东西了,此时,代码就不满足跨平台性(可移植性)

2.2 在代码顶部加入一行:#define _CRT_SECURE_NO_WARNINGS


这样在代码顶部加入一行:#define _CRT_SECURE_NO_WARNINGS之后就可以成功编译运行!

2.3 在代码顶部加入一行: #pragma warning(disable:4996)

在代码顶部加入一行: #pragma warning(disable:4996),其中4996对应的错误代码 C4996,如下所示:

这样加入之后,也是可以成功编译运行!

2.4 在预处理定义中加入宏定义_CRT_SECURE_NO_WARNINGS

如同2.2的方法,我们可以不在文件中添加,直接在预处理定义中加入宏定义_CRT_SECURE_NO_WARNINGS

  1. 选择【解决方案资源管理器】····>【项目属性】
  2. 然后选择【配置属性】–>【C/C++】–> 预处理器
  3. 编辑【预处理器定义】
    选择【预处理器定义】最右边的下拉框(下拉箭头),然后选择编辑
  4. 加入宏定义 _CRT_SECURE_NO_WARNINGS


加入宏定义 _CRT_SECURE_NO_WARNINGS

5. 点击【确定】
6. 重新编译运行

把2.2 和 2.3 的方法注释掉,也可以成功编译运行!

2.5 禁用特定警告

这个方法对应的 2.3 在代码顶部加入一行: #pragma warning(disable:4996)

打开【项目属性】→【C/C++】→【高级】→【禁用特定警告】

然后填上这个错误对应的C4996编号就好了,这个项目就都不会再显示这个错误了。

这样也是可以正常编译运行的!

2.6 关闭 SDL checks

真正原因在与vs中的SDL检查。
于是可以:右键单击工程文件–>属性(最后一个)--------> c/c++ ------>SDL checks ------------> no.

  1. 选择【解决方案资源管理器】····>【项目属性】
  2. 然后选择【配置属性】–>【C/C++】–> 常规


3. 选择【SDL检查】,关闭它

选择【否】,然后保存。

4. 恢复2.4 加入预处理器定义,如下所示:

这样,我们即使没有2.4的方法 也是可以正常编译运行!

三、总结一下

方法多种多样,

  1. 使用fscanf_s函数替代fscanf函数
  2. 在代码顶部加入一行:#define _CRT_SECURE_NO_WARNINGS
  3. 在代码顶部加入一行: #pragma warning(disable:4996)
  4. 在预处理定义中加入宏定义_CRT_SECURE_NO_WARNINGS
  5. 禁用特定警告
  6. 关闭 SDL checks

推荐使用方法4,这样可以一劳永逸。

其他 方法2和方法4对应,方法3和方法5对应。

【我的C语言学习进阶之旅】解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.相关推荐

  1. 关于c语言报错error C4996: ‘scanf‘: This function or variable may be unsafe.

    关于c语言scanf 这里记录一下复习c语言数据结构时遇到的一些问题: 在VS中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: int x; /*循环输入顺序栈元素用*/D ...

  2. 【我的C语言学习进阶之旅】介绍一下NDK开发中关于JNI函数的两种注册方式:静态注册和动态注册

    目录 一.要介绍本篇博客的原因 二.静态注册 2.1 实现原理 2.2 实现过程 2.3 弊端 2.4 示例 三.动态注册 3.1 实现原理 3.2 实现过程 3.3 优点 3.4 示例 一.要介绍本 ...

  3. 【我的C/C++语言学习进阶之旅】NDK开发之解决错误:signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0xXXX

    一.错误描述 今天在使用C++实现一个OpenGL特效的时候,运行出错,如下所示: 错误描述为: signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr ...

  4. 【我的C语言学习进阶之旅】什么是.hpp文件?

    目录 一. `.hpp`文件是啥? 2.1 .hpp的疑问来源 2.2 什么是hpp文件? 2.2.1 以往套路 2.2.2 .hpp 新方式 2.3 使用`.hpp`文件有什么好处? 三.思考一下为 ...

  5. 我的Android进阶之旅------解决Android Studio编译后安装apk报错:The APK file does not exist on disk...

    1.错误描述 今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示: The APK file build\outputs\apk\OYP_2.3.4_I2Base_64 ...

  6. 《C语言杂记》解决 error c4996 ‘fopen‘ This function or variable may be unsafe

    [问题描述] 在Visual Studio中使用功能'fopen'操作文件时,出现以下错误: error C4996: 'fopen': This function or variable may b ...

  7. 【我的OpenGL学习进阶之旅】C++如何加载TGA文件?

    一.TGA文件相关介绍 通过前面的博客 [我的OpenGL学习进阶之旅]什么是TGA文件以及如何打开TGA文件? 地址:https://ouyangpeng.blog.csdn.net/article ...

  8. C语言 error C4996: This function or variable may be unsafe - C语言零基础入门教程

    目录 一.error C4996 简介 二.error C4996 解决办法 1.采用_s 结尾的安全版本 2.去掉 visual studio "安全开发生命周期(SDL)检查" ...

  9. 【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料

    目录 一.相关书籍 OpenGL 方面 C方面 NDK 线性代数 二.相关博客 2.0 一些比较官方的链接 2.1 OpenGL着色器语言相关 2.2 [[yfan]](https://segment ...

最新文章

  1. axtoolbarcontrol加载图层后还是灰的_OpenLayers教程九:多源数据加载之瓦片地图原理一...
  2. Git安装教程(Windows安装)
  3. clion 带参数调试运行
  4. 用python画简单的四叶草-使用 python 操作 redis
  5. 从 2018 年 Nacos 开源说起
  6. JavaScript的运动——模拟重力场
  7. JDK内置的进制转换
  8. 红黑树为什么可以确保没有一条路径会比其他路径长出两倍
  9. 精选 26 个 Python 实用技巧,想秀技能先 Get 这份技术列表!
  10. 在ASP.NET中调用存储过程方法新解
  11. 接收二进制数据_详解前端websocket原理之数据传输协议
  12. Hadoop DataNode : Address already in use
  13. 创建dqn的深度神经网络_深度Q网络(DQN)-II
  14. Linux静态库运行找不到lc,创建和使用静态库(问题:undefined reference)
  15. Spring Cloud 篇 :OpenFeign
  16. 数字滤波器设计工具_数字设计师和代理商的资源和工具
  17. Matlab机器学习入门(一)
  18. LEWITT莱维特STREAM4x5、DGT260声卡安装调试教程
  19. python开发贴吧_python爬虫-贴吧
  20. HTTP协议原理详解

热门文章

  1. vue项目中使用节流throttle
  2. Feign使用JPA分页类Page和Pageable抛出序列化异常
  3. 亚马逊卖家遇到发货与收货数量不一致该如何申请有效赔偿?
  4. 【转】: 通俗讲义:游戏中战斗力计算方法那些事儿
  5. bxSlider使用
  6. 简明卷积神经网络讲解
  7. mmdetection3D
  8. 成绩统计(数位计算)
  9. 使用Facebook的Pytorch的BigGraph从知识图谱中提取知识
  10. 暴力拒绝白嫖,著名开源项目作者删库跑路,数千个应用程序无限输出乱码,亚马逊云也躺枪...