关于VS2019scanf的安全问题

关于VS2019scanf的安全问题,第1张

关于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的编译器上是不能编译通过的 这样就降低了代码的可移植性

那么如何消除错误呢

利用宏消除scanf安全警告
    找到VS目录中的 newc++file.pp用notepad++或者其他文本编辑器 添加#define _CRT_SECURE_NO_WARNINGS 这句话

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

         问题解决! 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存