关于VS2019scanf的安全问题

相信很多人遇到过使用scanf提示错误的情况

那么VS报错的原因是什么呢?

先说一下scanf与scanf_s的区别

        scanf()函数是标准c中提供的标准输入函数,用来接收用户的输入数据

        scanf_s()函数是微软公司VS开发工具提供的一个功能相同的安全标准函数,使用该函数的时候 必须提供一个数字来表明最多读取多少位字符

        而scanf()函数在读取数据的时候不检查边界,所以可能造成内存访问越界

举个栗子

//比如  如果分配了5个字节的空间但是 用户输入了10个字节,就会导致scanf()都熬10个字节
char arr[5]={};
scanf("%s",arr);
//如果你输入1234567890,那么5以后的部分会被写到别的变量所申请的空间上面去
//这可能就会导致程序运行异常

        在这里推荐使用scanf 因为scanf毕竟是标准库函数 而scanf_s是VS专用的

        你的代码在非VS的编译器上是不能编译通过的 这样就降低了代码的可移植性

那么如何消除错误呢

利用#define消除scanf安全警告

  1. 找到VS目录中的 newc++file.pp
  2. 用notepad++或者其他文本编辑器 添加#define _CRT_SECURE_NO_WARNINGS 这句话

 (这样就告诉他  不要在警告我啦!)

         问题解决! 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021狮子歌歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值