scanf在VS中报错

为啥在VS中使用scanf,strcpy strlen strcat 等函数会有警告呢?
scanf是c语言提供的函数,但函数本身自带安全性问题,微软工程师为了解决这些安全问题,在VS2013以上的版本上添加了scanf_s 这类函数。
scanf_s vs编辑器提供的,虽然提高了安全性能,但移植性太差,故不建议使用。

解决办法:

1、打开“项目”——“ConsoleApplication1属性”,在VC++的预处理器定义部分添加_CRT_SECURE_NO_DEPRECATE即可。

2、顶部加上这一段#define _CRT_SECURE_NO_WARNINGS 宏定义

 

scanf和scanf_s的区别?

scanf有安全漏洞,具体体现在以%s接受输入的数据时(%c,%d,%f之类的没什么影响),多余的数据读多了,或者没读完(易被黑客利用),在VS2005版本中微软发布了scanf_s以替代scanf,所以在功能上两者最大的区别是安全性。

scanf_s需要更多的参数(即输入数据所占的字节数),我们可以看到scanf_s("%c",&a);有明显的警告,但程序依旧可以跑起来,影响不大。

但如果是scanfs("%s",arr);的话,直接程序崩溃,感受到差别了吗,你可以这么认为scanf_s就是为%s而生的,必须传参数

 

posted @   C羽言  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示