scanf() scanf_s() 区别
写博原因:这几天由于小学期的缘故,接触到了好多C代码,在VS2013中编译的时候,遇到了如下问题:
错误 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\revenge\documents\visual studio 2013\projects\克鲁斯卡尔\克鲁斯卡尔\源.cpp 17 1 克鲁斯卡尔
查了资料,学到了些东西
scanf()函数是标准C中提供的标准输入函数,用以用户输入数据
scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了scanf_s()。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。
scanf()在读取数据的时候不会检查边界,如果编程的时候输入的数据大于分配的内存空间,进而会导致程序的运行异常
scanf_s()在读取数据的时候会检查边界,如果输入的数据达到了所请求的内存空间,则不会再读入数据
例如:
char buf[5]={'\0'};
scanf_s("%s",buf,5);
因为定义的缘故,最多只能读取四个字符,当输入0123456789的时候,buf只会接受前4个字符
与这个类似的情况,还有C++ int long等等数据类型都有长度的限制,以后需要注意
如果所写东西有错误的地方,欢迎指正。
scanf() scanf_s() 区别的更多相关文章
- fgets和scanf的区别
fgets和scanf的区别 1.测试使用scanf的一个例子: #include "stdio.h" #include "string.h" int main ...
- SCANF SCANF_S
今天在看C的教程的时候,用VS2013写了一小段代码 scanf("%f",&w); 提示需要在预编译器里添加 _CRT_SECURE_NO_WARNINGS, 百度了下 ...
- fgets、gets和scanf的区别
gets()从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中.换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字 ...
- scanf 与 cin 的区别
在论坛上看到有人提出一个如下的问题,在此总结一下. 原问题: http://topic.csdn.net/u/20110414/22/90d0606c-9876-48e4-9b69-bd8bd8a41 ...
- C++学习(七)(C语言部分)之 输入
输入学习时的笔记(其实也没什么用,留着给自己看的) 输出是指 把内容打印到控制台窗口 输入是指 把内容输入到程序里 scanfscanf 从键盘获取内容到程序里格式占位符+变量要加取地址符 1.格式占 ...
- C++中的注解理解
SAL: the Microsoft Source Code Annotation Language. SAL: the Microsoft Source Code Annotation Langua ...
- 【C语言学习】《C Primer Plus》第13章 文件输入/输出
学习总结 1.文件函数原型1: FILE* fopen(char *filename, char *openmode); //打开文件,返回文件指针 filename:文件名,更确切地说,是包含文件 ...
- 让人又爱又恨的char(字符型)
今天来总结一下char型,平常写算法的时候对这个东西感觉都有一点绕着走,说到底还是对这部分的知识不熟悉所以有点怕他,不过以后不要怕,今天来总结一下 首先,说到字符型数据类型,char型,恩它是一种数据 ...
- C库函数标准编程之fscanf()函数解读及其实验
函数功能 fscanf()函数用于从参数stream的文件流中读取format格式的内容,然后存放到...所指定的变量中去.字符串以空格或换行符结束(实验1中会对它进一步说明) 函数格式 字符格式说明 ...
随机推荐
- 【Dubbo源码阅读系列】之 Dubbo XML 配置加载
今天我们来谈谈 Dubbo XML 配置相关内容.关于这部分内容我打算分为以下几个部分进行介绍: Dubbo XML Spring 自定义 XML 标签解析 Dubbo 自定义 XML 标签解析 Du ...
- hadoop环境搭建-伪分布模式
Appache hadoop 版本:2.77 jdk:1.8 系统:centos7 注意不要在root下解压,要单独建一个用户安装hadoop及其组件. 一.先查看系统是否有自带j #dk: r ...
- Go语言连接Oracle(就我这个最全)
综合参考了网上挺多的方案 倒腾了半天终于连接好了 Go都出来这么多年了 还没有个Oracle的官方驱动... 过程真的很蛋疼..一度想放弃直接连ODBC 首先交代一下运行环境和工具版本: WIN10 ...
- nginx多域名同IP同80端口配置
http://blog.csdn.net/webnoties/article/details/37597959 vi /etc/nginx/nginx.conf 里面有这2句话: include /e ...
- 1483: [HNOI2009]梦幻布丁
1483: [HNOI2009]梦幻布丁 链接 分析: 启发式合并+链表. 代码: #include<cstdio> #include<algorithm> #include& ...
- 新建React Native项目步骤
根据官方环境 https://reactnative.cn/docs/getting-started/ 搭建好之后 1.新建项目 打开React Native 命令行工具,并输入 react-nati ...
- javascript中的toString()方法
javascript中的toString()方法,主要用于Array.Boolean.Date.Error.Function.Number等对象.下面是这些方法的一些解析和简单应用,做个纪律,以作备忘 ...
- Macaca上手体验
在研究了一段时间Appium后,尝试对另一个框架做实验——Macaca,阿里的开源测试框架,该框架不只适合移动端,同样适用于web端,可谓是方便的很啊~ 同时支持js.java.python.封装好的 ...
- SecureCRT 用法总结
SecureCRT 用法总结 1.下载与破解方法: Mac:https://www.jianshu.com/p/9427f12b1fdb Window:https://drive.google.c ...
- 利用shell连接服务器
#应用 连接timesten 数据库 host = Linux(ip, 'user', 'pwd') # 传入Ip,用户名,密码host.connect() #主机开启cdsql = host.sen ...