首页 > 编程知识 正文

c语言中scanf不安全,c语言scanf语句错误

时间:2023-05-04 04:05:53 阅读:182295 作者:4021

错误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&sol;S初论

一.B/S结构的基本概念 1.什么是动态网页 2.为什么需要动态网页 3.如何实现动态网页 4.为什么学习B/S技术 4.1C/S结构 优点: 1.C/S架构的界面和操作可以很丰富. 2.安全性能可以 ...

java中super关键字的作用

1.super关键字可以在子类的构造方法中显示地调用父类的构造方法,super()必须为子类构造函数中的第一行. 2.super可以用来访问父类的成员方法或变量,当子类成员变量或方法与父类有相同的名字 ...

关于asp&period;net mvc中的httpModules 与 httpHandler

ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,A ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。