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 警告问题


文章目录


一、问题由来

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


二、为何会存在这个问题

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


三、解决方法

方法1(scanf_s)不推荐

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

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

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


方法2(#define _CRT_SECURE_NO_WARNINGS 1)推荐

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

c 复制代码
#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


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

相关推荐
无忧.芙桃3 分钟前
位图妙用:512MB 实现 40 亿整数的存在性查询
c语言·c++·面试·哈希算法
liangshanbo12156 分钟前
面试题:线上 JavaScript 报错如何快速定位到源码?
开发语言·javascript·ecmascript
ShineWinsu15 分钟前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset
听风若依20 分钟前
数据在内存中的存储-纸面笔记整理
c语言·笔记
weixin_4407305028 分钟前
迭代器Iterator(列表生成器、可迭代的如何生成迭代器)
开发语言·python
朝朝辞暮i34 分钟前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
weixin_440730501 小时前
内置函数、json文本、pickle二进制
开发语言·python·json
殷色玫瑰1 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
李游Leo1 小时前
HarmonyOS 7 + Spatial Recon Kit-C++:3DGS 高斯参数的非有限值隔离与可渲染性门禁【鸿蒙心迹】
开发语言·c++·3d·harmonyos
Code_Solitude2 小时前
C语言:关于二维数组的作业总结
java·c语言·前端