【C语言】scanf函数报错

一.为什么visual studio用scanf_s而不是scanf作为输入函数

       其主要原因是scanf存在越界访问内存问题

#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
    char ch[5];

    scanf("%s", ch);  //输入abcd

    printf("%s\n", ch);  //正常输出abcd

    scanf("%s", ch);  //输入abcdefg

    printf("%s\n", ch);  //此时已经报错,报错原因是输入时超过原数组的大小导致数组越界
    //访问到不属于该数组的范围
}

二、如何解决该问题

1.将scanf 修改成 scanf_s,使用visual code编译器提供的函数,可解决该问题

2.采用宏定义

方法一

#define _CRT_SECURE_NO_WARNINGS 1

        必须注意,这段代码必须添加到第一行

    但是下次还需要在新建源码中继续添加该字段


方法二

下面介绍一种彻底解决该方法的方式

最终目的是修改:

 如果读者能找到,直接省略前几步

百度搜索Everything官网

下载该软件并对其进行安装

【C语言】scanf函数报错_第1张图片

打开软件直接搜索newc++file.cpp

【C语言】scanf函数报错_第2张图片

我们将其复制到桌面再对其进行操作

【C语言】scanf函数报错_第3张图片

【C语言】scanf函数报错_第4张图片

用记事本将其打开

【C语言】scanf函数报错_第5张图片

将#define _CRT_SECURE_NO_WARNINGS 1输入到其中

【C语言】scanf函数报错_第6张图片

 将该文件保存后,再复制回原目录下

【C语言】scanf函数报错_第7张图片

替换原有文件

【C语言】scanf函数报错_第8张图片

【C语言】scanf函数报错_第9张图片

问题全部解决,再次创建新源码时,该字段就会出现,希望以上内容对读者能起到一点帮助

你可能感兴趣的:(成长日记,c语言,c++,开发语言)