1. 主页 > vs安装问题 > VS2019安装问题 >

Visual Studio 2019报4996错误的解决办法

错误原因:从VS2013开始,编译器将scanf和printf判定为不安全的方法,所以将会推荐使用scanf_s和printf_s方法。报错如图
在这里插入图片描述

  • 解决办法:
    在代码首行加入:
#pragma warning(disable:4996)

下面将讨论scanf_s与scanf的异同

  • 使用scanf_s和scanf输入整数类型,字符类型和实数类型操作相同
  • 输入字符串时,两者有所不同
char name[n];
scanf("%s",name);  //scanf用法
scanf("%s",name,n);// scanf_s用法,n为缓冲区大小,最多容纳n-1个字符,因为最后一个字符为\0
/*
为了避免引用不存在的元素,所以传入一个与参数大小有关的值,防止黑客利用该漏洞黑掉系统。
*/

ANSI C中没有scanf_s,只有scanf,scanf在读取时不检查边界,所以可能造成内存访问越界的问题

char buf[5]={'\0'};
scanf("%s",buf);//此处如果输入0123456,那么后面的字符会被写到别的空间上

printf_s 和printf的异同同理。

本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2019anzhuangwenti/2020/0725/4573.html

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息