VS2019 scanf报错--4种解决办法

发布于:2023-07-04 ⋅ 阅读:(134) ⋅ 点赞:(0)

我们很多人初学c语言都是用的vs编译器,像我一开始用的DEV C++,原因是它的包小,操作简便,但随着对c语言的认识,发现对这个编译器越来越不顺眼,通过看网课发现很多老师用的都是vs,所以我就安装了一个vs2019。

越用发现是越好用,我的c,c++,还有c#都可以在这一个编译器上写。当然,刚开始用也不习惯,发现很多以前能跑的代码,复制到vs怎么报错了???当然,作为程序员最不怕的就是有bug,直接找度娘,解决90%的问题。那么,接下来我就分享一个我刚开始用vs2019的时候,见到的一个错误以及解决办法。

  1. scanf报错
#include <stdio.h>

int main() {
	int a ;

	scanf("%d", &a);

	printf("%d\n", a);

	return 0;
}

这是很简单的一个代码,输入一个值赋给a,然后再输出a的值,那么会报什么错呢?

在这里插入图片描述

至于这里为什么报错我就不解释了,这是他编译器自身的原因,咱们直接给出解决办法:

方法一:将scanf改为scanf_s

在这里插入图片描述
可以看到,可以运行,并且成功输出a的值。

方法二:代码头添加:# define _CRT_SECURE_NO_WARNINGS
在这里插入图片描述
a也成功输出,但这个编译器也会警告,但不影响我们程序的运行。

方法三:改属性
打开属性,找到c/c++,找到预处理定义,打开,在编辑里添加如下代码:_CRT_SECURE_NO_DEPRECATE,点击应用,点击确定。
在这里插入图片描述
这样,我们再去跑一遍代码,发现a也成功输出了。
在这里插入图片描述
方法四:同样是改属性,话不多说,直接上图:
在这里插入图片描述
将里面的SDL检查,改为否,再去运行程序,发现程序也成功跑起来了。

总结:这类错误还有很多,这是vs编译器自带的安全检查造成的,可能就是为了凸显这是他的编译器,必须要与众不同(自认为的哈,肯定是有他的原因的)。