VS2022中关于scanf函数报错解决方法

2023-11-09

VS虐你千百遍,但是你还是对他如初恋啊!

        首先我们先了解一下什么是scanf函数:在我们刚开始学习c语言的时候不妨会接触到这个家伙,scanf函数是一个输入流函数(读取你从键盘输入的值重新给变量赋值)。

int X = 0;
int Y = 0;

scanf("%d %d", &X, &Y);//改变一个变量的值,应该传址。可以联想一下指针

        当大佬在敲的时候,咦!这个函数这样子用么这不简简单单砍瓜切菜一样,然后我也上手在我刚刚装好的VS2022上胡乱一顿猛敲,好不容易可以做一个小小计算器(只能用来计算四则运算)当我满怀成就感时,Ctrl + F5(VS中开始执行不调试快捷键)哐当一下白色报错小窗口弹出来,这对当时俺们小白的心情是非常难受的,出现一大堆看不懂的英文        为什么会出这样的错误呢?是我们哪里操作失误还是编译器出问题了呢?

        没错还真是编译器的问题:scanf函数在VS编译器底下他认为是一个不安全的函数,会导致数组越界,返回值忽略等一系列问题。

举个例子:

char ch[5];

scanf("%s", ch);  //输入abcd

printf("%s\n",ch);  //正常输出abcd

scanf("%s", ch);  //输入abcdefg

printf("%s\n",ch);  //此时已经报错,报错原因是输入时超过原数组的大小导致数组越界
                    //访问到不属于该数组的范围

        所以VS他推荐我们要使用 scan_f  这个函数,这个函数不是C语言里面的,他是编译器自己的函数。但是一直都是用scanf这个函数啊!你让我又重新学一个陌生的我肯定是不是特别愿意的。

可是我想用VS编译怎么办,接下来就是解决的办法;

解决办法有两种:第一种:宏定义

                             第二种:禁止C4996报错

 方法一   宏定义:在我们的c源文件的开头加上辣么一句代码

                        #define _CRT_SECURE_NO_WARNINGS

       虽然还是有警告,报错的问题可以完美解决,但是每次写代码我都要写一句这样的这么长一段英文我也记不住啊,那我还不如去学scan-f这个函数对吧。当然我们可以一劳永逸,在此电脑找到对应路径D:\vs2022\vsIDE\Common7\IDE\VC\VCProjectItems

当然这个是我自己安装的 VS D盘,然后在对应路径找到  newc++file.cpp文件右击鼠标用记事本打开,然后再把刚刚代码   #define _CRT_SECURE_NO_WARNINGS  写入到记事本保存即可。

要是保存失败我们把newc++file.cpp拷贝一份放到桌面,然后我们再把刚刚代码放入刚刚拷贝到桌面的newc++file.cpp里面,保存后拖回原来路径下覆盖即可,当我们下次再创建一个源文件时就会在最开始第一行地方出现了

方法二   禁止C4996报错:这个方法呢不是一劳永逸,每次创建工程都要来一遍要是感觉第一种方法繁琐可以采用第二种。

        找到调试 -> 找到最后一行调试属性进入

 找到 C/C++ 展开找到高级

 然后我们看到右边,禁用特定警告  在里面我们输入4996 确定即可

         这个方法就是每次创建工程都要来一遍,不过找多了也熟悉,就像开关机一样。

       

以上就是此篇所有内容啦,感谢大家支持!!!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2022中关于scanf函数报错解决方法 的相关文章

随机推荐

  • 2021-11-09 indy使用,局域网发送文件的源代码(idUDPserver,idUDPClient)

    indy使用 局域网发送文件的源代码 idUDPserver idUDPClient 服务端 unit Unit1 interface uses Windows Messages SysUtils Variants Classes Grap
  • 外网测试telnet&SSH漏洞案例分析

    I 问题现象 我司通讯管理机产品 现场要连接外网 安全测试中发现以下问题 II 问题分析 我司通讯管理机产品开通了telnet 以及SSH服务 主要用来远程调试 问题分析 1 Unencrypted Telnet Server Telnet
  • 使用lev00生成电荷密度等高图

    以graphene为例 INCAR SYSTEM graphene ISTART 0 ICHARG 2 Startparameter for this run PREC A Electronic Relaxation ENCUT 500 N
  • 两两配对问题

    1 两两配对差值最小 题目描述 给定一个长度为偶数的数组arr 将该数组中的数字两两配对并求和 在这些和中选出最大和最小值 请问该如何两两配对 才能让最大值和最小值的差值最小 分析 主要是利用了c 里面对数组的一个排序函数sort 数组名
  • 【python】pip与conda的区别

    pip pip只能用来管理包 pip install能在任何环境中安装python包 也仅限python包 conda 现在听说只能通过anaconda和miniconda来安装 待科普 安装后可以使用conda来创建虚拟环境和管理包 关于
  • OVP过压保护IC高耐压36V,首选钰泰ETA7008/ETA7014

    深圳市展嵘电子有限公司有需要的上帝可联系小陈 136 6225 3950 3412 1522 98产品描述 ETA7008是一颗非常适合用于无线充和移动电源的高耐压保护IC 性价比非常好 有很大程度防止移动电源容易过压烧毁的可能 ETA70
  • [react基础]关于v6版本route的变化,以及常见应用模式

    该说不说 在做这些之前 你要记得一件事 route不是react或者vue等原本就有的组件 需要你手动下载 然后导入 原本的框架只是最终挂载到一个html界面上 别再问我为啥你扒下来的代码为啥不好使了 讨厌 gt lt 下载指令去看我另一篇
  • Log4j(四)——Log4j1与Log4j2的区别

    前言 几乎每个大型应用程序都包含自己的日志或跟踪API 为了符合这一规则 欧盟SEMPRER项目决定编写自己的跟踪API 这是在1996年初 经过无数次的增强 几个版本和大量的工作之后 API演变成了log4j 这是一个流行的Java日志包
  • Linux下Node.js引用模块报错Error: Cannot find module

    1 问题描述 背景 scrapyd上传的py文件 使用execjs调用Linux中的js文件 其中js引用了crypto js 但是报错找不到这个模块 已安装 适配多个解密 const CryptoJS require crypto js
  • linux反向路径检查,【问题解决】linux中反向查找java安装路径

    问题描述 常用的which java whereis java只能定位到执行路径 或只能展示一部分java路径 无法找到安装路径 可使用ls lrt反向查找 即将文件以建立时间先后顺序的倒叙排列显示 依次执行 ls lrt usr bin
  • Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsExc

    浏览器输入相应URL访问自己的localhost出现白页 且控制台打印 Failed to obtain JDBC Connection nested exception is com mysql cj jdbc exceptions Co
  • OpenGL ES 三种类型修饰 uniform attribute varying

    1 uniform变量 uniform变量是外部application程序传递给 vertex和fragment shader的变量 因此它是application通过 函数glUniform 函数赋值的 在 vertex和fragment
  • Lua——table(表)的使用

    文章目录 一 基本知识 二 table的构造 1 使用步骤 2 示例演示 三 table的操作 1 操作语法 2 示例演示 一 基本知识 1 table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型 如 数组 字典等 2 Lua
  • @JsonFormat注解不生效问题分析及解决方案

    JsonFormat pattern yyyy MM dd HH mm ss timezone GMT 8 出现的问题在于我后台VO用了LocalDateTime格式返回 想配置一个全局的时间格式化 这个就不做介绍了 百度一下就有 这么配置
  • 【vue+antd】上传图片 - 使用customRequest方法自定义上传

    基于antdv 1 7版本 实现图片墙UI 图片的base64格式上传 删除 回显及进度条等功能 1 HTML div class form item content style width 560px div class clearfix
  • 线程通信基础示例(synchronized 与 Lock + Condition实现线程通信)

    目录 一 synchronized 实现线程通讯 代码示例 二 Lock Condition 实现线程通讯 代码示例 Lock Condition 实现线程通讯的优点 一 synchronized 实现线程通讯 什么是线程通讯 可以将线程分
  • jquery

    jquer 概念 一个JavaScript框架 简化JS开发 jQuery是一个快速 简洁的JavaScript框架 是继Prototype之后又一个优秀的JavaScript代码库 或JavaScript框架 jQuery设计的宗旨是 w
  • OpenCV中的立体图像创建深度图

    OpenCV中的立体图像创建深度图 1 效果图 2 源码 参考 这篇博客将介绍如何从立体图像创建深度图 1 效果图 原图 VS 视差图效果如下 可以看到结果受到高度噪音的污染 通过调整 numDisparities 和 blockSize
  • C++ - max_element

    在C 中 要找到一个数组中的最大元素 可以使用 std max element 函数 以下是使用步骤 包含
  • VS2022中关于scanf函数报错解决方法

    VS虐你千百遍 但是你还是对他如初恋啊 首先我们先了解一下什么是scanf函数 在我们刚开始学习c语言的时候不妨会接触到这个家伙 scanf函数是一个输入流函数 读取你从键盘输入的值重新给变量赋值 int X 0 int Y 0 scanf