大家好,这里是菜菜!
我们在使用VS2019时,编译使用scanf函数时,系统会报错,提示我们该函数不安全。
那这是为什么呢?在这里菜菜进行简单说明一下:
scanf()函数是标准C中提供的标准输入函数,用以用户输入数据;而scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,在调用该函数时,必须提供一个数字以表明最多读取多少位字符。而scanf()在读取数据时时不会检查边界,即很有可能会造成内存访问越界。
其实使用scanf_s函数是无可厚非的,但是考虑到代码的移植性以及在使用scanf_s之前,需要对scanf_s函数进行系统的学习,所以菜菜建议还是继续使用scanf函数。
那有什么办法来解决scanf函数报错呢?
下面我就说明下如何解决问题:
(1)进行宏定义
在程序前进行宏定义手动输入 #define _CRT_SECURE_NO_WARNINGS,这样我们就可以直接使用scanf函数了;例如:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("%d", a);
return 0;
}
(2)禁用SDL检查
我们在创建好项目后,在屏幕上方找到项目并点击,再选择项目属性;
点击后选择将SDl检查关闭即可(是/sdl--->否/sdl-);
这个方法的缺点就是每一次创建新的.c或者.cpp文件的时候都要改一次属性,比较繁琐。
(3)修改文件(强烈推荐!!!)
这个方法需要修改文件,之后在创建新项目时会自动进行宏定义,可谓是“一劳永逸”!!
首先在VS的安装路径下有一个文件:newc++file.cpp文件。而在VS工程中创建新的.c或者.cpp文件的时候,都是从newc++file.cpp文件拷贝的。
首先我们找到newc++file.cpp文件(这里菜菜用的是Everything软件,你只需要输入相关文件名,它只需要几秒即可找到文件,非常好用!!!)
Everything软件在CSDN上有许多软件资源分享,大家直接搜索下载就好。
在找到文件后,右击鼠标点击打开路径,这里我们就能得到该文件的位置;
由于权限限制,我们没有办法对它进行直接更改。所以我们将该文件复制在桌面上后打开该文件输入 #define _CRT_SECURE_NO_WARNINGS。退出保存后将桌面上的文件再拖入源文件夹进行替换。
在完成上述操作后,我们会发现当我们重新创建新的项目源文件时,会自动进行宏定义。
自此我们就可以愉快地适用scanf函数啦!
————————————————————————————
这里是菜菜!您的点赞与关注是对菜菜最大的支持!!