VisualStudio2019解决scanf函数报错问题

 更新时间:2023年08月14日 09:24:00   作者:Duck Bro  
在 Visual Studio 2019 编辑代码时,前期刚刚接触到VS编译器时存在的困惑,当用scanf()函数,进行输入时,在运行的时候编译器会出现警告报错,本文就来介绍一下解决方法

一、问题由来

在 Visual Studio 2019 编辑代码时,前期刚刚接触到VS编译器时存在的困惑,当用scanf()函数,进行输入时,在运行的时候编译器会出现警告报错。如下图情况

二、为何会存在这个问题

在Visual Studio 2019中,scanf函数会被标记为不安全的函数,因为它没有检查输入缓冲区的大小。如果输入缓冲区不够大,scanf函数可能会导致缓冲区溢出,从而引发安全漏洞。

三、解决方法

方法1(scanf_s)不推荐

为了避免这个问题, VS编译器中可以使用scanf_s函数代替scanf。scanf_s函数具有相同的参数和行为,但添加了一个额外的参数,用于指定输入缓冲区的大小。例如,要读取一个整数,您可以这样使用scanf_s函数:

int num;
if (scanf_s("%d", &num) != 1) {
    // scanf_s失败,处理错误
}

注意:如果您还想使用scanf函数而不是scanf_s函数,请在项目的属性中启用“CrtSecureWarnings”选项,该选项将禁用scanf函数的警告。 

方法2(#define _CRT_SECURE_NO_WARNINGS 1)推荐

在文件的最顶端输入以下代码

#define  _CRT_SECURE_NO_WARNINGS 1

注意一定得是文件最开头的地方 !!! 

因为在编程时常常会使用到 scanf 函数,为了解决每次编程时都需要在开头写这条会很繁琐

以下是解决方法

在新建.c文件时自带 #define _CRT_SECURE_NO_WARNINGS 1

先下载这个软件 旁边是 Everything官网地址

运行Everything,在搜索框里查找这个文件 newc++file.cpp

右击打开路径

复制该文件到桌面,用vs2019打开进行修改

将这段代码 #define _CRT_SECURE_NO_WARNINGS 1 复制到文件中

将这个文件保存到步骤4.的路径中,替换本来的文件

这样就在新建文件时,就有这行代码啦

总结

在学习C语言的初期,经常遇到scanf函数报错问题,建议使用方法2,方法1的scanf_s是在VS编译器中有,使用时如果在其他编译器运行时可能会出错,所以建议使用方法2,#define _CRT_SECURE_NO_WARNINGS 1

到此这篇关于VisualStudio2019解决scanf函数报错问题的文章就介绍到这了,更多相关VS2019 scanf报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言常见排序算法之插入排序(直接插入排序,希尔排序)

    C语言常见排序算法之插入排序(直接插入排序,希尔排序)

    这篇文章介绍C语言常见排序算法之插入排序(直接插入排序,希尔排序),主要分享介绍的是插入排序的两种常用算法,直接插入排序和希尔排序,需要的朋友可以参考一下
    2022-07-07
  • C语言中组成不重复的三位数问题

    C语言中组成不重复的三位数问题

    这篇文章主要介绍了C语言中组成不重复的三位数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++数组和指针的区别与联系

    C++数组和指针的区别与联系

    这篇文章主要介绍了C++数组和指针的区别与联系,数组是具有固定大小和连续内存空间的相同数据集合,指针是指存放内存地址的变量,更多详细资料请参考下面文章内容
    2022-01-01
  • C语言轻松实现扫雷小游戏

    C语言轻松实现扫雷小游戏

    扫雷是一款经典的小游戏,这篇文章主要为大家详细介绍了C语言轻松实现扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • QT中进程的创建实现

    QT中进程的创建实现

    本文主要介绍了QT中进程的创建实现,详细介绍了创建进程的整个过程,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-08-08
  • 基于C++ bitset常用函数及运算符(详解)

    基于C++ bitset常用函数及运算符(详解)

    下面小编就为大家带来一篇基于C++ bitset常用函数及运算符(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • C++中auto类型说明符详解(附易错实例)

    C++中auto类型说明符详解(附易错实例)

    这篇文章主要给大家介绍了关于C++中auto类型说明符的相关资料,文中还附易错实例,在C++11中引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型,需要的朋友可以参考下
    2023-07-07
  • C语言测试n的阶乘和x的n次方

    C语言测试n的阶乘和x的n次方

    今天小编就为大家分享一篇关于C语言测试n的阶乘和x的n次方,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • C++获取指定目录下的所有文件

    C++获取指定目录下的所有文件

    这篇文章主要为大家详细介绍了C++获取指定目录下所有文件的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C++应用Eigen库对应实现matlab中部分函数问题

    C++应用Eigen库对应实现matlab中部分函数问题

    这篇文章主要介绍了C++应用Eigen库对应实现matlab中部分函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12

最新评论