vlambda博客
学习文章列表

常见报错:如何解决 vs 编译器scanf函数报错问题?

问题来源

当我们使用vs编译器编译c语言代码,并需要用到一些非常常用的库函数的时候(如scanf)

vs编译器通常会报出如下错误:

常见报错:如何解决 vs 编译器scanf函数报错问题?


有的时候即便报错了,程序也可以正常运行;

但有的时候就会同图中一样,程序无法运行;

出现这个错误的原因是vs编译器认为这些库函数是“不安全的”(我可真谢谢你,担duo心guan那xian么shi多,微软)

解决方法

解决这个报错问题的方法有两种

1.使用_S下标

如图所示,我们可以在库函数后面加一个_s,这时候vs就会把它认为是“安全的函数”,程序就可以正常运行了

常见报错:如何解决 vs 编译器scanf函数报错问题?


方法一的致命缺点:

但是这么做有一个非常大的弊端——该代码只能在vs编译器里运行

如图,如果我们将这一串带_S的代码复制到**devc++**这款编译器里面

devc++编译器会报错,无法运行这串代码

常见报错:如何解决 vs 编译器scanf函数报错问题?


同样的,如果你需要在mooc、牛客网或者其他刷题网站上填写代码的时候

系统也无法运行这种带了_s的c语言代码

这时候代码的“可移植性” (即通用性)就变差了!

这时候就需要我们的解决方法2了

2.使用防报错语句

只需要在这个源文件的第一行添加这样一串代码

#define _CRT_SECURE_NO_WARNINGS 1

这串代码的作用就是屏蔽掉vs编译器对函数危险性的排查报错

如图所示,我们的代码就能正常运行了

常见报错:如何解决 vs 编译器scanf函数报错问题?


这样操作,即便是将这一行防报错代码移植到另外一个编译器里,这串代码仍然能正常运行

而且有的时候即便加上_s,还是会出现一些和scanf无关的奇怪报错

使用方法二就能解决这个问题,这里建议大家还是使用方法二啦!

常见报错:如何解决 vs 编译器scanf函数报错问题?


方法二的缺点?

你可能会说,那我岂不是每次写代码之前都需要打上这么一个define语句,那样也太麻烦了吧!

再说了,我也背不下来啊!

别急,下面我就会告诉你怎么让vs编译器每次创建源文件的时候自动带上这么一串代码

如何在vs编译器里加上默认语句

这里我们需要用到另外一款同样很经典的软件——Notepad++

常见报错:如何解决 vs 编译器scanf函数报错问题?


安装完成后,我们点击左上角的 文件

打开如下路径里,箭头所指的new++file文件

常见报错:如何解决 vs 编译器scanf函数报错问题?


vs编译器默认安装路径是c盘

如果你的vs编译器不在c盘,可以通过右键桌面vs编译器的快捷方式,打开文件所在的位置,找到你vs编译器的安装路径

常见报错:如何解决 vs 编译器scanf函数报错问题?


打开以后是空白的

我们只需要讲这行define语句加入这个文件,ctrl+s保存

由于vs编译器处于c盘,修改这个文件需要申请管理员权限,点击同意即可!

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

这时候你创建的新的源文件,就会默认带上这串代码啦!

由于<stdio.h>这个头文件实在是太常用了,所以我把它也加入了这个文件里。

如果你愿意,也可以把int main()加入这个文件,方法同上



这样就不用每次创建新的源文件的时候自己手打啦!

一劳永逸!

-----------------------------------

写在最后:另外,对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!