关于 VS2019 版本 scanf 函数不安全报错问题

大家好,这里是菜菜!

我们在使用VS2019时,编译使用scanf函数时,系统会报错,提示我们该函数不安全。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6I-c5bCP6JKZ,size_20,color_FFFFFF,t_70,g_se,x_16

那这是为什么呢?在这里菜菜进行简单说明一下:

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检查

  我们在创建好项目后,在屏幕上方找到项目并点击,再选择项目属性;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6I-c5bCP6JKZ,size_20,color_FFFFFF,t_70,g_se,x_16

 

点击后选择将SDl检查关闭即可(是/sdl--->否/sdl-);

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6I-c5bCP6JKZ,size_20,color_FFFFFF,t_70,g_se,x_16

   这个方法的缺点就是每一次创建新的.c或者.cpp文件的时候都要改一次属性,比较繁琐。

(3)修改文件(强烈推荐!!!)

  这个方法需要修改文件,之后在创建新项目时会自动进行宏定义,可谓是“一劳永逸”!!

  首先在VS的安装路径下有一个文件:newc++file.cpp文件。而在VS工程中创建新的.c或者.cpp文件的时候,都是从newc++file.cpp文件拷贝的。

  首先我们找到newc++file.cpp文件(这里菜菜用的是Everything软件,你只需要输入相关文件名,它只需要几秒即可找到文件,非常好用!!!)

  Everything软件在CSDN上有许多软件资源分享,大家直接搜索下载就好。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6I-c5bCP6JKZ,size_20,color_FFFFFF,t_70,g_se,x_16

在找到文件后,右击鼠标点击打开路径,这里我们就能得到该文件的位置;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6I-c5bCP6JKZ,size_20,color_FFFFFF,t_70,g_se,x_16

 由于权限限制,我们没有办法对它进行直接更改。所以我们将该文件复制在桌面上后打开该文件输入  #define _CRT_SECURE_NO_WARNINGS。退出保存后将桌面上的文件再拖入源文件夹进行替换。

  在完成上述操作后,我们会发现当我们重新创建新的项目源文件时,会自动进行宏定义。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I-c6I-c5bCP6JKZ,size_20,color_FFFFFF,t_70,g_se,x_16

   自此我们就可以愉快地适用scanf函数啦!

————————————————————————————

 这里是菜菜!您的点赞与关注是对菜菜最大的支持!!

 

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值