五种办法解决vs_2019中scanf报错的问题

 

目录

例子

运行的结果

方法一:scanf改为scanf_s

方法二:添加#define _CRT_SECURE_NO_WARNINGS 1

方法三:寻找文件newc++file.cpp

方法四:改变属性,输入_CRT_SECURE_NO_DEPRECATE

方法五:改属性,关闭SDL检查。


在运用vs学习c语言的过程中,我们发现在一些测试平台上运行成功c代码放到vs上无法运行成功。原因有的情况就是scanf的报错,这也是我在新学c语言时遇到过的问题,下面给出几种我的解决办法。

例子

#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d", n);
	return 0;
}

这是一段很简单的代码,运行之后我们看看发生了什么。

运行的结果

这是编译器所导致的问题,下面我给出解决办法。

方法一:scanf改为scanf_s

可以看到运行成功。但有大量代码我们在vs测试时上传到其他平台时,还需要将_s全部删去,这无疑浪费了时间。

方法二:添加#define _CRT_SECURE_NO_WARNINGS 1

#define _CRT_SECURE_NO_WARNINGS 1

 

 

添加#define _CRT_SECURE_NO_WARNINGS 1后,我们可以看见虽然有警告,但仍可以成功运行。但这种方法在我们创造一个新项目以后就要加一次很不方便,所以我们用下面这种方法。

方法三:寻找文件newc++file.cpp

使用记事本打开,输入#define _CRT_SECURE_NO_WARNINGS 1。有些电脑无法打开保存,我们可以复制后保存到桌面,然后进行替换。

 

 

这样我们每创造一个新项目都会自动生成#define _CRT_SECURE_NO_WARNINGS 1这句话。

 

方法四:改变属性,输入_CRT_SECURE_NO_DEPRECATE

_CRT_SECURE_NO_DEPRECATE

先点击项目打开属性,打开C/C++的预处理器,点击编辑输入_CRT_SECURE_NO_DEPRECATE,然后保存。

 我们可以看到运行成功,因为改的是一个项目的属性。所以新建一个项目还是要添加_CRT_SECURE_NO_DEPRECATE。

方法五:改属性,关闭SDL检查。

同理先点击项目打开属性,打开常规,SDL检查改为否(双击蓝色区域改为否),然后保存。

    以上就是我的办法,希望对各位有所帮助。

                                    

 

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
VS2019使用scanf函数时,可能会出现一些编译错误或者警告,因为scanf函数在读取输入时,可能会导致缓冲区溢出或者类型不匹配的问题。下面是一些可能出现的问题解决方法: 1. 关闭scanf的安全检查 在VS2019,为了避免scanf函数导致的缓冲区溢出问题,会默认开启scanf的安全检查,这可能会导致一些警告或者错误。如果你想关闭这个安全检查,可以在项目属性进行设置。具体操作如下: - 在解决方案资源管理器右键单击项目,选择“属性”。 - 在弹出的对话框,选择“C/C++” -> “预处理器”。 - 在“预处理器定义”一栏,添加“_CRT_SECURE_NO_WARNINGS”宏定义。 这样就可以关闭scanf的安全检查了,但需要注意的是,关闭安全检查可能会导致一些安全问题,因此你需要自己确保输入的数据是安全的。 2. 使用scanf_s函数 在VS2019,可以使用scanf_s函数代替scanf函数,这个函数是scanf函数的安全版本,可以避免一些安全问题scanf_s函数的使用方法和scanf函数类似,只是需要在函数名后面加上一个“_s”。例如: ```c scanf_s("%d", &n); ``` 3. 使用其他输入函数 除了scanf函数和scanf_s函数,还有其他一些输入函数可以使用,例如gets、fgets等。这些函数也有各自的优缺点,你可以根据自己的需要选择合适的函数。 希望以上解决方法能够帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值