【0】VS对不安全函数报错的解决方案

目录

0.前言

1.C语言:不安全函数     

2.报错原因分析

3.解决办法

3.1 预处理

3.1.1 程序第一行添加预处理

3.1.2 定义预处理器

3.2 取消安全检查

3.3 newc++file.cpp文件


0.前言

作为一个学习C语言的小白,难免遇到一些问题。有些问题可能在大佬面前很简单,但小白愣是照了百度做了一下午没弄出来,最后经过内心斗争,战战兢兢的在交流群里问出了自己的疑问,结果无非是没人回或者问度娘。同是小白,希望能将自己遇到的问题给别的小白帮助。

1.C语言:不安全函数     

VS编译器有时候会对C标准的一些函数报错,比如scanf、strcpy函数等等。例如

【0】VS对不安全函数报错的解决方案_第1张图片

报错信息:这个函数不安全,建议使用scanf_s代替。

【0】VS对不安全函数报错的解决方案_第2张图片

像这种类似的_s函数都是VS编译器提供的,换言之,VS认为C中的部分函数不安全,就推荐使用自己的函数代替。使用VS的代替函数确实能够成功运行,但是有很多缺点,比如跨平台性不好,scanf_s这个函数在别的编译器就运行不了。在解决这个问题之前,考虑一下为什么这些C函数不安全。

2.报错原因分析

VS报错是有原因的,因为这些原本的C函数不够严谨,没有做安全检查。例如:

这个代码很简单,我们先忽略第一行的预处理。就是定义一个字符数组,用scanf将敲的内容输入到a的数组里。

C是没有字符串这个类型的,字符串存在字符数组里

但这个代码没有问题吗?显然不是,a定义的数组是5个大小,当输入过多的时候程序就崩溃了,这就是所谓的不安全函数

【0】VS对不安全函数报错的解决方案_第3张图片

3.解决办法

3.1 预处理

3.1.1 程序第一行添加预处理

在错误信息中,还有后面一段话的描述。如果让这个错误失效的话,使用_CRT_SECURE_NO_WARNINGS,所以最简单的方法就是在第一行加一个预处理。

#define _CRT_SECURE_NO_WARNINGS 1

就是定义_CRT_SECURE_NO_WARNINGS这个是1(真),这样就可以运行了。

【0】VS对不安全函数报错的解决方案_第4张图片

3.1.2 定义预处理器

这个和添加在第一行是一样的,在项目-->属性-->C/C++-->预处理器-->预处理器定义(分号代表多个定义,将_CRT_SECURE_NO_WARNINGS复制进去)应用、确定即可,程序照样可以正常运行。 

【0】VS对不安全函数报错的解决方案_第5张图片

【0】VS对不安全函数报错的解决方案_第6张图片

3.2 取消安全检查

预处理方法确实简单,但缺点就是每次打开新的c文件就要在第一行添加。添加倒是不麻烦,主要是每次都要故意让VS提示出错,然后才能把错误信息中_CRT_SECURE_NO_WARNINGS复制过去,要不然谁记得住啊。

所以第二种方法就出现了,在C文件-->属性-->C/C++-->SDL检查(改为否就行),这种方法运行的时候程序会有警告,但是不影响运行。这种大概意思就是把VS的安全警告取消了。

【0】VS对不安全函数报错的解决方案_第7张图片

【0】VS对不安全函数报错的解决方案_第8张图片

3.3 newc++file.cpp文件

这个文件里面的内容会出现在每一次打开的c文件中,例如在文件里面输入“你好”,那么每次新建.c文件的时候就会在第一行出现“你好”,当然会有语法错误哈。所以我们只要在安装好VS后,将#define _CRT_SECURE_NO_WARNINGS 1 保存到这个文件中就可以了。

找到VS的安装位置,然后VC-->vcprojectitems-->newc++file.cpp(选择用记事本打开,将#define那一串复制保存就行了)

这里可能会有两个问题,第一个是找不到newc++file.cpp文件,这个文件是在安装位置的,可能我这么说有点像百度了。很简单,大部分人都会改安装路径,但是在D盘、F盘最起码知道吧。比如我是安装在D盘,直接搜索newc++file.cpp就行了。如图

【0】VS对不安全函数报错的解决方案_第9张图片

当然很多人还是选择会去百度,按照里面网友的方法可能也会成功。有一种适合找路径的方法, 先在开始菜单里面找到VS,右击文件所在位置。

我用的是2017版本,再右击文件所在位置。

【0】VS对不安全函数报错的解决方案_第10张图片

 【0】VS对不安全函数报错的解决方案_第11张图片

然后我的是在这个页面往上翻就找到了。找到VC这个文件夹就行了,然后VC-->vcprojectitems-->newc++file.cpp,复制保存OK。【0】VS对不安全函数报错的解决方案_第12张图片

找到newc++file.cpp已经成功一半了,第二个问题就是,保存不了,很多人可能会跳出下面这个错误框。 

【0】VS对不安全函数报错的解决方案_第13张图片

这是因为权限不够导致的,可能还会有别的方法解决,比如下载别的编辑器等等,这我就不介绍了。为了方便,我们直接改权限就OK了。

在newc++file.cpp,右键属性,在点击安全

【0】VS对不安全函数报错的解决方案_第14张图片找到当前登录的用户名,点击编辑权限,改成完全控制就可以了。

【0】VS对不安全函数报错的解决方案_第15张图片

【0】VS对不安全函数报错的解决方案_第16张图片这样保存退出,下一次登录VS,创建.c文件的时候,就会自动帮我们在第一行写入#define _CRT_SECURE_NO_WARNINGS 1  了

【0】VS对不安全函数报错的解决方案_第17张图片

你可能感兴趣的:(【C语言学习】,c语言,visual,studio)