目录
🎉前言
♥️正文
♠️scanf_s
♦️解决方法
1.搜索文件夹
2.复制文件路径
3.打开记事本(管理员身份)
4.找到目标文件
5.修改文件内容
♣️测试
🎉总结
🎉前言
微软的VS系列编译器号称地表最强集成开发环境(IDE),现在已经更新到了2022版,丰富的功能和高级的界面,对于学校里用的VC++ 6.0简直是降维打击,很多追求优质编码环境的同学可能都会去网上找到VS的资源,然后安装使用,当一切环境准备就绪时,发现涉及到使用 scanf 的代码无法编译,再三检查后发现代码没有任何问题,一时间甚至会怀疑自己是不是下错了编译器。其实没有,这是一个很常见的报错,也是所有想用VS的同学必过的一道坎。下面让我来教大家如何跨过这道坎:
♥️正文
让我们直接先进入报错模式
微软为了提高编程时的安全性(scanf有缺陷)以及增加用户对自己产品的依赖性(scanf_s只能在VS上使用),于是便设计了一个跟 scanf 功能相似的函数 scanf_s ,想用更全面的函数弥补 scanf 的缺陷,虽说微软本意是好的,但是像这种强制引导使用 scanf_s 的行为对新手是很不友好的,并且我们初学阶段很难接触到那些使用缺陷,试想一下,小明听了自己的C语言老师讲了几堂课,并在VC++ 6.0这种老平台熟练使用 scanf ,想着换更高级的VS来用用,结果发现自己熟悉的 scanf 一使用就报错😂,简直就是信念崩塌。
既然微软提供了 scanf_s 这个新函数,那就让我们试试。
♠️scanf_s
下面开始介绍最好用的屏蔽方法(不挑版本):
♦️解决方法
解决方法就是按照VS给出的提示,加上 _CRT_SECURE_NO_WARNINGS 这句话即可屏蔽C4996问题,因为是在程序中,因此需要这样写 #define _CRT_SECURE_NO_WARNINGS 1 这句话一般位于源文件顶部:
这样能解决了一时的问题,但不能彻底解决这个问题,因为我们重新创建源文件后需要再次重新添加这段屏蔽代码,非常麻烦,有没有一劳永逸的方法呢?当然有!
1.搜索文件夹
打开我的电脑,找到VS的安装路径,找不到也没关系,我们可以通过在桌面图标上单击鼠标右键,选择打开文件位置,进入我们的VS文件后,搜索 *newc ,等待结果出来。
2.复制文件路径
文件路径待会要用,最好是能记下目标文件长啥样,方便后面一眼认出来。
3.打开记事本(管理员身份)
因为VS默认不让用户随意修改文件内容,所以我们需要通过管理员身份打开记事本,以管理员身份访问目标文件,才有可能做到修改文件内容。
4.找到目标文件
目的文件的寻找需要用到刚刚的地址,将地址粘贴到搜索框内,很快就能找到目标文件,如果看不到,多半是因为查看方式没设对,需要设置为查看所有文件。
5.修改文件内容
当我们打开目标文件后会发现里面什么也没有,这时把我们的屏蔽代码粘贴进去即可,再点击右上角的X,点击保存,这样我们的目标文件就修改好了。
#define _CRT_SECURE_NO_WARNINGS 1
♣️测试
经过我们的一番操作,已经告诉了编译器一件事:每次新建源文件时都帮我们加上这段屏蔽代码,编译器也是很听话,每次都会给我们加上代码,以便我们能愉快的使用 scanf 。至于这段代码什么时候失效:1.重装编译器时,此时目标文件内容会重置。2.升级VS时,有可能VS在升级后会将目标文件覆盖(没测试过,但最好别升级)。3.更换电脑时,比较不是每个人的VS都会像我们一样操作,所以每换一次电脑就需要重新操作一遍。
🎉总结
本文给大家介绍了C4996问题出现的原因以及解决方法,scanf_s 虽好,可不要随便用,学会使用我们的一劳永逸方法才舒服,让编译器由原来的禁止到帮我们写屏蔽代码,微软看了都想连夜修复这个漏洞😂(开个玩笑)。如果你学会了解决C4996的方法,不妨去自己电脑上操作一下,如果成功了记得去帮你的同学解决这个问题,这样你在他们眼中的地位自然会升高一些。🎊
如果你觉得本文写的还不错的话,期待留下一个小小的赞,你的支持是我分享的最大动力!
如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正!