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

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 确定即可

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

       

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

 

  • 31
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值