C4996 “scanf“ 问题——初学者使用VS的拦路虎

简介: 目录🎉前言♥️正文♠️scanf_s♦️解决方法1.搜索文件夹2.复制文件路径3.打开记事本(管理员身份)4.找到目标文件5.修改文件内容♣️测试🎉总结

目录

🎉前言

♥️正文

♠️scanf_s

♦️解决方法

1.搜索文件夹

2.复制文件路径

3.打开记事本(管理员身份)

4.找到目标文件

5.修改文件内容

♣️测试

🎉总结


🎉前言


 微软的VS系列编译器号称地表最强集成开发环境(IDE),现在已经更新到了2022版,丰富的功能和高级的界面,对于学校里用的VC++ 6.0简直是降维打击,很多追求优质编码环境的同学可能都会去网上找到VS的资源,然后安装使用,当一切环境准备就绪时,发现涉及到使用 scanf 的代码无法编译,再三检查后发现代码没有任何问题,一时间甚至会怀疑自己是不是下错了编译器。其实没有,这是一个很常见的报错,也是所有想用VS的同学必过的一道坎。下面让我来教大家如何跨过这道坎:

ab9815e3389ea790bb1a3c033e36c0c.png

♥️正文


让我们直接先进入报错模式

4125d061269f05b4f5e8cf15c9248ef.png


微软为了提高编程时的安全性(scanf有缺陷)以及增加用户对自己产品的依赖性(scanf_s只能在VS上使用),于是便设计了一个跟 scanf 功能相似的函数 scanf_s ,想用更全面的函数弥补 scanf 的缺陷,虽说微软本意是好的,但是像这种强制引导使用 scanf_s 的行为对新手是很不友好的,并且我们初学阶段很难接触到那些使用缺陷,试想一下,小明听了自己的C语言老师讲了几堂课,并在VC++ 6.0这种老平台熟练使用 scanf ,想着换更高级的VS来用用,结果发现自己熟悉的 scanf 一使用就报错😂,简直就是信念崩塌。



既然微软提供了 scanf_s 这个新函数,那就让我们试试。


♠️scanf_s


961fd317e752aeef3f7dcfc8660dc97.png

下面开始介绍最好用的屏蔽方法(不挑版本):


♦️解决方法


06e182423dcc090c17621f5e94129e1.png

解决方法就是按照VS给出的提示,加上 _CRT_SECURE_NO_WARNINGS 这句话即可屏蔽C4996问题,因为是在程序中,因此需要这样写  #define _CRT_SECURE_NO_WARNINGS 1 这句话一般位于源文件顶部:


这样能解决了一时的问题,但不能彻底解决这个问题,因为我们重新创建源文件后需要再次重新添加这段屏蔽代码,非常麻烦,有没有一劳永逸的方法呢?当然有!


1.搜索文件夹


打开我的电脑,找到VS的安装路径,找不到也没关系,我们可以通过在桌面图标上单击鼠标右键,选择打开文件位置,进入我们的VS文件后,搜索 *newc ,等待结果出来。

19ecf8008e5f129db3fa5274484ceb2.png


2.复制文件路径


文件路径待会要用,最好是能记下目标文件长啥样,方便后面一眼认出来。


a72992cad87a5086ba8bd5a3f8e645f.png

3.打开记事本(管理员身份)


因为VS默认不让用户随意修改文件内容,所以我们需要通过管理员身份打开记事本,以管理员身份访问目标文件,才有可能做到修改文件内容。

ce56da617ec489f5f2a7e2fc469f38b.png


4.找到目标文件


目的文件的寻找需要用到刚刚的地址,将地址粘贴到搜索框内,很快就能找到目标文件,如果看不到,多半是因为查看方式没设对,需要设置为查看所有文件。

bc604a5a7d528d98e180c52eafc757a.png


5.修改文件内容


当我们打开目标文件后会发现里面什么也没有,这时把我们的屏蔽代码粘贴进去即可,再点击右上角的X,点击保存,这样我们的目标文件就修改好了。

#define _CRT_SECURE_NO_WARNINGS 1    

ec48dae5d8c55e3733085cbd24d469f.png


♣️测试


经过我们的一番操作,已经告诉了编译器一件事:每次新建源文件时都帮我们加上这段屏蔽代码,编译器也是很听话,每次都会给我们加上代码,以便我们能愉快的使用 scanf 。至于这段代码什么时候失效:1.重装编译器时,此时目标文件内容会重置。2.升级VS时,有可能VS在升级后会将目标文件覆盖(没测试过,但最好别升级)。3.更换电脑时,比较不是每个人的VS都会像我们一样操作,所以每换一次电脑就需要重新操作一遍。

fe0b535b8850003736f788831fe4a11.png


🎉总结


 本文给大家介绍了C4996问题出现的原因以及解决方法,scanf_s 虽好,可不要随便用,学会使用我们的一劳永逸方法才舒服,让编译器由原来的禁止到帮我们写屏蔽代码,微软看了都想连夜修复这个漏洞😂(开个玩笑)。如果你学会了解决C4996的方法,不妨去自己电脑上操作一下,如果成功了记得去帮你的同学解决这个问题,这样你在他们眼中的地位自然会升高一些。🎊


 如果你觉得本文写的还不错的话,期待留下一个小小的赞,你的支持是我分享的最大动力!


 如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正!


2eb0a93b8ed2510e360504ce1a882eb.png

目录
相关文章
|
9月前
|
C语言
c语言编程练习题:7-17 成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
118 0
|
9月前
|
C语言
c语言编程练习题:7-8 是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)
147 0
|
9月前
|
C语言
c语言编程练习题:7-36 韩信点兵
c语言编程练习题:7-36 韩信点兵
80 0
|
9月前
|
C语言
c语言编程练习题:7-40 到底是不是太胖了
c语言编程练习题:7-40 到底是不是太胖了
154 0
|
9月前
|
C语言
c语言编程练习题: 7-1 重要的话说三遍
这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了。 注意每遍占一行,除了每行的回车不能有任何多余字符。 代码长度限制16 KB时间限制400 ms内存限制64 MB
152 0
|
9月前
|
C语言
c语言编程练习题:7-60 Welcome to You!
c语言编程练习题:7-60 Welcome to You!
95 0
|
存储 算法 C语言
学会了C语言,不来自己写个【三子棋】小项目吗?
学会了C语言,不来自己写个【三子棋】小项目吗?
59 0
|
9月前
|
搜索推荐 算法 C语言
插入排序C语言,小白必看的教科书般详解
插入排序C语言,小白必看的教科书般详解
|
9月前
|
C语言
C语言:初阶测试错题(查漏补缺)
C语言:初阶测试错题(查漏补缺)
52 0
|
C语言
C语言实现三子棋(胎教版教学)由浅入深(下)
C语言实现三子棋(胎教版教学)由浅入深(下)
71 0