错误C4996
第一次学习c语言时,接触的第一个I/O函数是scanf ()。 但是,在更高版本的Visual Studio中编译代码会导致意外错误,包括但不限于2015、2013和2012。
如下面的简单代码所示:
#include 'stdio.h '
入主(void ) )。
{
int i;
printf(inputI(n );
scanf('%d ',I );
printf(Iis%d ),I );
返回;
() ) ) ) )。
但是,将输出错误C4996。 错误消息如下所示
错误1 errorc 4996:‘scanf’: thisfunctionorvariablemaybeunsafe.considerusingscanf _ sinstead.todisabledeprecation
由于错误地报告了scanf不安全,建议将scanf替换为scanf_s。 替换后,代码应与以下内容类似
#include 'stdio.h '
入主(void ) )。
{
int i;
printf(inputI(n );
scanf_s('%d ',I );
printf(Iis%d ),I );
返回;
() ) ) ) )。
没有错误提示。
scanf和scanf_s
MSDN介绍了以_s结尾的函数,例如scanf_s、scanf_s_l、wscanf_s和_wscanf_s_l。 这些版本的函数具有安全性增强功能。
scanf等函数存在于旧版本的CRT(cruntimelibrary,part of the C standard library ),在读取字符时,如果不指定%s的宽度,则可能会引起缓冲区溢出等
使用scanf时,只要确定读取的宽度,就不会报告错误。 将代码更改为:
#include 'stdio.h '
入主(void ) )。
{
int i;
printf(inputI(n );
scanf_s (),I );
printf(Iis%d ),I );
返回;
() ) ) ) )。
这里将读取的%d的宽度控制为5。 但是,如果读取的数据超过宽度限制,数据将会丢失。 例如,这是输入100000,输出的I值是10000。
解决方法
使用scanf时规定宽度。
使用sacnf_s代替sacnf。
3 .创建新项目时取消SDL检查。
超复杂间接递归——C语言初学者代码常见错误与缺陷lpar; 6rpar;
问题:问题的来源请参考C语言初学者代码中常见的错误和缺陷(5)。 在正文的最后,他说完成的代码还有进一步改进的余地。 本文完成了这个改善。 因此,本文讨论的不是初学者代码中常见的错误和缺陷,而是我自己.
C语言初学者代码常见错误与缺陷lpar; 5rpar;
提问:素数世博会会场所在的信息通信馆内,游客可以通过手机等终端参与互动游戏,与虚拟人物Kr. Kong进行猜谜。 画面上出现整数x时,如果能比Kr. Kong更早给出与其素数最接近的答案,你就.
的加减法——C语言初学者代码常见错误与缺陷lpar; 12rpar;
前文链接:分数加减法——C语言初学者代码中常见错误与瑕疵(11 )重构主题修正我舍弃了原题“其中a、b、c、d为0-9整数”的前提条件。 因为这样的限制是不必要的。 只假设a、b .
C语言初学者代码常见错误与缺陷lpar; 9rpar;
标题文字的个数现在给出由小写字母组成的字符串。 请在字符串中找到出现次数最多的字符。 如果出现次数最多的字符有多个,请输入输出最小的字符。 键入:然后在第一行中键入正整数t(0)
心中有OpenCurlyDoubleQuote; “数”——C语言初学者代码常见错误与缺陷lpar; 8rpar;
C语言初学者代码中常见的错误和瑕疵(7)中,我给出的重构代码中存在一个bug .该bug被飞鸟_Asuka网友指出“时间的复杂性是不是很大”,“想看我一眼就当成数学题来做” .
C语言初学者代码常见错误与缺陷lpar; 7rpar;
问题:矩形的个数是
一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形.给出A,B,计算可以从中找到 ...C语言中关于scanf函数的用法
scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化 ...
随机推荐
EffectiveJava——请不要在代码中使用原生态类型
先看一个栗子,看看能不能找出来里面的错误: /** * 请不要在新代码中使用原生态类型 * @author weishiyao * */ public class Test { public stat ...
location.replace与location.href,location.reload的区别
1. location.replace顾名思义是替换的意思 这种方法的原理是,用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后 退按钮永远不会变为可用 οnclick=&qu ...
yum使用详细
1.使用YUM查找软件包 命令:yum search~ 2.列出所有可安装的软件包 命令:yum list 3.列出所有可更新的软件包 命令:yum list updates 4.列出所有已安装的软件 ...
PHP导出excel信息表格
//导出表格public function get_exel($fileName,$headArr,$list){//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入 ...
(总结)工作中常用的js自定义函数——日期时间类
//设置时间类 var Wsdatatime = function(){ this.today = (new Date()).getTime(); //当前时间 } Wsdatatime.protot ...
Mysql 如何做双机热备和负载均衡 (方法二)
先简要介绍一下mysql双向热备:mysql从3.23.15版本以后提供数据库复制功能.利用该功能可以实现两个数据库同步,主从模式(A->B),互相备份模式(A<=>B)的功能. m ...
3d 人物残像
前言: gameunity 框架 还在继续完善中,0.2版本将会是一次 重大的里程碑. 正文: 哈哈,大家一定流汗了吧.请原谅我为自己代言. 好了,今天我要讲的是 3d人物残像. 首先我来说下 目前 ...
javaweb-1-B/S初论
一.B/S结构的基本概念 1.什么是动态网页 2.为什么需要动态网页 3.如何实现动态网页 4.为什么学习B/S技术 4.1C/S结构 优点: 1.C/S架构的界面和操作可以很丰富. 2.安全性能可以 ...
java中super关键字的作用
1.super关键字可以在子类的构造方法中显示地调用父类的构造方法,super()必须为子类构造函数中的第一行. 2.super可以用来访问父类的成员方法或变量,当子类成员变量或方法与父类有相同的名字 ...
关于asp.net mvc中的httpModules 与 httpHandler
ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,A ...