C语言scanf()函数在VS编译器中报错

问题描述

我们输入这样一段代码:

int main()
{
	int score = 0;
	printf("请输入成绩:");
	scanf("%d", &score);
	printf("你的成绩是%d", score);
	return 0;
}

运行结果:

刚学C程序设计的小伙伴们在使用VS编译器时都会有一个疑问?scanf()函数在使用使用时为什么IDE会报错,难到时自己敲错了吗?经过反复检查之后还是没有解决,这时候我们不妨看看报错是怎么描述的:'scanf': This function or variable may be unsafe.Consider using scanf_s instead.To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

报错原因

VS认为scanf函数不安全,所以使用时会报错。如果想要这个错误失效,可以使用VS编译器自带的scanf_s替换。scanf_s函数是VS这个IDE提供的,不是C语言标准库中的函数。

解决方案

法一:如果将scanf用scanf_s代替,就意味着你的代码在其他的编译器上是不能 通过编译,使得代码降低了可以移植性。

法二:
我们可以看到报错:To disable deprecation, use _CRT_SECURE_NO_WARNINGS.所以我们可以在当前代码的第一行(必须是第一行)加上:#define _CRT_SECURE_NO_WARNINGS,但是每一次写代码都需要加一次,为了避免重复性的操作,让每一个我们创建的.c文件中自动加上,#define _CRT_SECURE_NO_WARNINGS。在VS安装路径下有一个newc++file.cpp的文件,所有新建的.c/.cpp的文件都是拷贝newc++file.cpp这个文件!所以只需要在newc++file.cpp这个文件中加上:#define _CRT_SECURE_NO_WARNINGS后就可以在每一次新建的.c/.cpp文件中的第一行自动添加#define _CRT_SECURE_NO_WARNINGS。

这里给大家推荐一个小工具Everything:

Everything是由voidtools开发的一款文件搜索工具,这款软件是基于名称实时定位文件和目录。Everything功能强大,体积小巧,第一次安装使用时会建立一个索引数据库,将所有文件和文件夹的名称导入其中,后续使用能够以极快的速度快速搜索,查找到你所需要的文件。

下载链接:Everything电脑版

操作步骤:

第一步:打开下载好的Everything小工具

第二步:搜索 newc++file.cpp这个文件

第三步:右击鼠标点击打开路径

我们可以看到newc++file.cpp这个文件在我们电脑中的文件路径。

第四步:右击鼠标去编辑,打开方式可以选择记事本也可以选择VS ,这里我们选择记事本打开;

第五步:在记事本文件中加入:#define _CRT_SECURE_NO_WARNINGS后保存

注意:这里可有部分用户保存时提示权限不够。解决方式是将newc++file.cpp文件拷贝一份到桌面上,因为桌面上的权限是比较高的。然后在桌面上用记事本或其他打开去编辑保存,然后将桌面上的文件拷贝到原newc++file.cpp文件目录下替换未修改前的newc++file.cpp文件即可。这样就可以达到一劳永逸的使用scanf()函数。

方法三:

使用#pragma warning(disable:4996)

处理警告,处理的建议是disable失效4996这个警告:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值