当前位置: 首页 > news >正文

Visual Studio 2019 解决scanf函数报错问题

前言

Visual Studio 2019 解决scanf函数报错问题
博主博客链接:https://blog.csdn.net/m0_74014525
关注博主,后期持续更新系列文章
*****感谢观看,希望对你有所帮助*****


系列文章

第一篇:Visual Studio 2019 详细安装教程(图文版)
第二篇:Visual Studio 2019 实用功能设置(背景颜色,代码颜色及行号设置)
第三篇:Visual Studio 2019 代码调试技巧
第四篇:Visual Studio 2019 解决scanf 警告问题


文章目录

  • 前言
  • 系列文章
  • 一、问题由来
  • 二、为何会存在这个问题
  • 三、解决方法
    • 方法1(scanf_s)不推荐
    • 方法2(#define _CRT_SECURE_NO_WARNINGS 1)推荐
  • 总结


一、问题由来

在 Visual Studio 2019 编辑代码时,前期刚刚接触到VS编译器时存在的困惑,当用scanf()函数,进行输入时,在运行的时候编译器会出现警告报错。如下图情况
在这里插入图片描述


二、为何会存在这个问题

在Visual Studio 2019中,scanf函数会被标记为不安全的函数,因为它没有检查输入缓冲区的大小。如果输入缓冲区不够大,scanf函数可能会导致缓冲区溢出,从而引发安全漏洞。


三、解决方法

方法1(scanf_s)不推荐

为了避免这个问题, VS编译器中可以使用scanf_s函数代替scanf。scanf_s函数具有相同的参数和行为,但添加了一个额外的参数,用于指定输入缓冲区的大小。例如,要读取一个整数,您可以这样使用scanf_s函数:

int num;
if (scanf_s("%d", &num) != 1) {// scanf_s失败,处理错误
}

注意:如果您还想使用scanf函数而不是scanf_s函数,请在项目的属性中启用“CrtSecureWarnings”选项,该选项将禁用scanf函数的警告。


方法2(#define _CRT_SECURE_NO_WARNINGS 1)推荐

在文件的最顶端输入以下代码

#define  _CRT_SECURE_NO_WARNINGS 1

注意一定得是文件最开头的地方 !!!

 如图所示
因为在编程时常常会使用到scanf函数,为了解决每次编程时都需要在开头写这条会很繁琐


以下是解决方法
在新建.c文件时自带#define _CRT_SECURE_NO_WARNINGS 1

  1. 先下载这个软件 旁边是 Everything官网地址
    在这里插入图片描述

  2. 运行Everything,在搜索框里查找这个文件newc++file.cpp
    在这里插入图片描述

  3. 右击打开路径
    在这里插入图片描述

  4. 复制该文件到桌面,用vs2019打开进行修改
    在这里插入图片描述

  5. 将这段代码#define _CRT_SECURE_NO_WARNINGS 1复制到文件中
    在这里插入图片描述

  6. 将这个文件保存到步骤4.的路径中,替换本来的文件
    在这里插入图片描述

  7. 这样就在新建文件时,就有这行代码啦
    在这里插入图片描述


总结

在学习C语言的初期,经常遇到scanf函数报错问题,建议使用方法2,方法1的scanf_s是在VS编译器中有,使用时如果在其他编译器运行时可能会出错,所以建议使用方法2,#define _CRT_SECURE_NO_WARNINGS 1


如这篇博客对大家有帮助的话,希望 三连 支持一下 !!! 如果有错误感谢大佬的斧正 如有 其他见解发到评论区,一起学习 一起进步。

http://www.lryc.cn/news/128588.html

相关文章:

  • 亚马逊无限买家号如何注册?
  • 前端框架学习-ES6新特性(尚硅谷web笔记)
  • 普陀发布新规服务元宇宙企业 和数软件发展元宇宙场景落地
  • Kotlin差异化分析,let,run,with,apply及also
  • (stm32)低功耗模式
  • 【C++学习手札】一文带你认识C++虚函数(内层剖析)
  • Python“牵手”1688商品评论数据采集方法,1688API申请指南
  • “深入解析JVM内部机制:探秘Java虚拟机的奥秘“
  • 【系统工具】开源服务器监控工具WGCLOUD初体验
  • powerBI应用技巧
  • RK3568背光调试分享
  • Numpy入门(2)—随机数
  • ansible的playbook剧本
  • 【03 英语语法:从句(名词从句、定语从句/形容词从句、状语从句/副词从句)】
  • vue动态修改audio地址
  • CF113A Grammar Lessons 题解
  • puzzle(0414)六边形拼图
  • 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测
  • BEV感知实时构建路口拓扑 觉非科技基于MapTR的优化与实践
  • 如何在TikTok“点火”?用时下最流行的工具解码赚钱
  • set NOCOUNT on
  • 垃圾回收机制
  • Golang 程序性能优化利器 PGO 详解(一):简单介绍及使用
  • redis key操作的相关命令
  • WebRTC | 网络传输协议RTP与RTCP
  • 160. 相交链表
  • 【MFC】12.双缓冲序列化机制-笔记
  • Linux 终端会话中,启动任务并放到后台运行
  • 软考笔记——10.项目管理
  • 算法与数据结构(二十四)最优子结构原理和 dp 数组遍历方向