常见报错:如何解决 vs 编译器scanf函数报错问题?
问题来源
当我们使用vs编译器编译c语言代码,并需要用到一些非常常用的库函数的时候(如scanf)
vs编译器通常会报出如下错误:
有的时候即便报错了,程序也可以正常运行;
但有的时候就会同图中一样,程序无法运行;
出现这个错误的原因是vs编译器认为这些库函数是“不安全的”(我可真谢谢你,担duo心guan那xian么shi多,微软)
解决方法
解决这个报错问题的方法有两种
1.使用_S下标
如图所示,我们可以在库函数后面加一个_s,这时候vs就会把它认为是“安全的函数”,程序就可以正常运行了
方法一的致命缺点:
但是这么做有一个非常大的弊端——该代码只能在vs编译器里运行
如图,如果我们将这一串带_S的代码复制到**devc++**这款编译器里面
devc++编译器会报错,无法运行这串代码
同样的,如果你需要在mooc、牛客网或者其他刷题网站上填写代码的时候
系统也无法运行这种带了_s的c语言代码
这时候代码的“可移植性” (即通用性)就变差了!
这时候就需要我们的解决方法2了
2.使用防报错语句
只需要在这个源文件的第一行添加这样一串代码
#define _CRT_SECURE_NO_WARNINGS 1
这串代码的作用就是屏蔽掉vs编译器对函数危险性的排查报错
如图所示,我们的代码就能正常运行了
这样操作,即便是将这一行防报错代码移植到另外一个编译器里,这串代码仍然能正常运行
而且有的时候即便加上_s,还是会出现一些和scanf无关的奇怪报错
使用方法二就能解决这个问题,这里建议大家还是使用方法二啦!
方法二的缺点?
你可能会说,那我岂不是每次写代码之前都需要打上这么一个define语句,那样也太麻烦了吧!
再说了,我也背不下来啊!
别急,下面我就会告诉你怎么让vs编译器每次创建源文件的时候自动带上这么一串代码
如何在vs编译器里加上默认语句
这里我们需要用到另外一款同样很经典的软件——Notepad++
安装完成后,我们点击左上角的 文件
打开如下路径里,箭头所指的new++file文件
vs编译器默认安装路径是c盘
如果你的vs编译器不在c盘,可以通过右键桌面vs编译器的快捷方式,打开文件所在的位置,找到你vs编译器的安装路径
打开以后是空白的
我们只需要讲这行define语句加入这个文件,ctrl+s保存
由于vs编译器处于c盘,修改这个文件需要申请管理员权限,点击同意即可!
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
这时候你创建的新的源文件,就会默认带上这串代码啦!
由于<stdio.h>这个头文件实在是太常用了,所以我把它也加入了这个文件里。
如果你愿意,也可以把int main()加入这个文件,方法同上
这样就不用每次创建新的源文件的时候自己手打啦!
一劳永逸!
-----------------------------------
写在最后:另外,对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!