关于在VS中使用scanf报错时的几种解决方法

前言

  • scanf函数是我们经常使用的输入函数之一,但在VS环境中运行时,却会报出系统错误。
  • 在这里插入图片描述
  • 翻译过来为:
  • 此函数或变量可能不安全。请考虑改用scanf_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅联机帮助
  • 造成这种情况的主要原因是微软认为scanf函数不安全,可能会导致安全漏洞。
  • 为了解决这个问题,下面提供以下方法供小伙伴们参考:

一、方法一

  • 使用 scanf_s 函数代替 scanf 函数
  • scanf_s 是 VS 编译器提供的一个函数,它与 scanf 函数的功能类似,但更加安全。
  • 注意:
  • 1、在使用 scanf_s 函数时,需要注意它的参数和返回值与 scanf 函数有所不同。
  • 2、scanf_s是VS提供的,不具备移至性,跨平台后就无法使用了。

二、方法二

  • 在代码开头添加 #define _CRT_SECURE_NO_WARNINGS
  • 这行代码的作用是告诉 VS 编译器不要检查 scanf 函数的安全性警告。这种方法比较简单,但可能会隐藏一些潜在的安全问题。
  • 注意:
  • 1、#define_CRT_SECURE_NO_WARNINGS之间是存在一个空格的,手动输入的时候易忽略。
  • 2、该行代码一定要放置在scanf函数使用的.c文件的第一行。在这里插入图片描述
  • 虽然这行代码能解决问题,但每次输入都需要手动输入,繁琐、麻烦。

三、方法三(一劳永逸)

  • 修改 newc++file.cpp 文件
  • 只要安装好VS软件,在安装路径下就会有一个 newc++file.cpp 的文件
  • 在这里插入图片描述
    在这里插入图片描述
  • 我们所建的 .c / .cpp 的文件均是拷贝newc++file.cpp 这个文件的!
  • 具体方法

  • 在文件上点击右键,使用VS或者记事本打开均可
  • 在这里插入图片描述
  • 直接将 #define _CRT_SECURE_NO_WARNINGS 复制进来,然后保存即可。
  • 在这里插入图片描述
    在这里插入图片描述
  • 注意:
  • 有的小伙伴在保存时会因为权限不够,无法保存。碰到这种情况时,可以将该文件复制到桌面进行保存,因为桌面上的操作权限是比较高的,保存好之后再覆盖原文件即可。

四、方法四

  • 让警告和错误失效
  • 在这里插入图片描述
  • 报错时会显示错误代码,记住这个代码。
  • 在程序开头加入这样一行代码 #pragma warning(disable:4996) ,这样系统就可以屏蔽掉这个报错信息了。
  • 这种做法只屏蔽掉了这个错误,针对性强。

五、总结

  • VS 中使用 scanf 报错的处理方法总结以下主要有以下几种:
  • 1、使用 scanf_s 函数替代 scanf 函数scanf_s 函数是微软为了解决 scanf 函数的安全问题而提供的替代函数。它在功能上与 scanf 函数相似,但增加了一些安全检查,以避免缓冲区溢出等安全问题。可以在代码中使用 scanf_s 函数来代替 scanf 函数。
  • 2、添加防报错语句:在源文件的第一行添加 #define _CRT_SECURE_NO_WARNINGS 这串代码,可以屏蔽掉 vs 编译器对函数危险性的排查报错,使代码能够正常运行。这种方法的缺点是每次写代码之前都需要打上这么一个 define 语句,比较麻烦。
  • 3、一劳永逸的方法:找到 VS 编译器默认安装路径下的 newc++file.cpp 文件,将其拖到桌面上,用记事本打开该文件,在里面加上 #define _CRT_SECURE_NO_WARNINGS 这段话并保存。然后将桌面上的 newc++file.cpp 文件拖回原来路径,点击继续。这样,在创建一个 c 语言代码就会自动生成该语句了。
  • 4、让该错误和警告失效:在程序开头加入这样一行代码 #pragma warning(disable:4996) ,屏蔽掉这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值