scanf_s()函数 (是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数)
scanf()函数是标准C中提供的标准输入函数,scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数。因为scanf()在读取数据时不检查边界,所以可能会造成内存访问越界而scanf_s不会。
scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。
其调用格式为:scanf("<格式化字符串>",<地址表>)。
scanf_s()函数:
scanf_s() 的功能虽然与scanf() 相同,但却比 scanf() 安全,因为 scanf_s() 是针对“ scanf()在读取字符串时不检查边界,可能会造成内存泄露”这个问题设计的。
scanf_s()用于读取字符串时,必须提供一个数字以表明最多读取多少位字符,以防止溢出。
实例:(统计输入字符串中原因字母出现的个数)(调试环境:visual studio 2010 C++)
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<CountVowel.h>int CountVowel(char str[]){int counter = 0;int i;for (i = 0; str[i] != '\0' ; ++i ){ switch(str[i]){ case 'a':case 'e':case 'i':case 'o':case 'u':case 'A':case 'E': case 'I':case 'O':case 'U':++counter;}}return counter;}void main(){char buffer[128]; printf("Please input a string:\n");scanf_s("%s" , buffer,128); /* 这里必须要有128,以表明最多读取128个字符,如果写成scanf_s("%s",buffer),程序将无法执行到底,且编译器会提示“Unhandled exception at 0xfefefefe in array.exe:0xC0000005: Access tion.” 。当然在安全性要求不高的情况下,不 一定非要用scanf_s()函数,可用scanf("%s",buffer)代替。 */printf("%d vowels appear in your string.\n",CountVowel(buffer));system("pause");}部分内容参考的原文链接:https://blog.csdn.net/silleyj/article/details/8545408
scanf_s()函数 (是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数)相关推荐
- Windows Mobile 5.0 中为开发人员提供的新功能(3)
Windows Mobile 5.0 中为开发人员提供的新功能(3) Pocket Outlook 增强功能 Pocket Outlook 向用户和应用程序开发人员提供了易于使用的 PIM.将 Poc ...
- 基于Windows Mobile 2003 的 Pocket PC 为开发人员提供的新功能(转)
对于 Pocket PC 用户和开发人员来说,基于 Microsoft® Windows Mobile® 2003 的 Pocket PC 是一个非常重要的里程碑.Pocket PC 2003 基于新 ...
- Windows Mobile 6 中为开发人员提供的新功能(1)
Windows Mobile 6 中为开发人员提供的新功能(1) 2007年06月10日 星期日 10:29 Jim Wilson,JW Hedgehog, Inc. 摘要 Windows Mobil ...
- JetBrains公司旗下开发工具简介
JetBrains公司旗下有下列的几种开发工具: Intellij IDEA: 用于开发 Java 等: WebStorm:用于开发 JavaScript.HTML5.CSS3 等前端技术: PyCh ...
- 解决scanf_s函数报错:没有为格式字符串传递足够的参数
报错:scanf_s函数报错:没有为格式字符串传递足够的参数 int main() {char s1[20] = "i m name";char *p1, *p2;char s3[ ...
- 【C语言:精准打击】scanf_s()函数与scanf()函数的相关解决方案
国际标准ANSI C中没有scanf_s()函数,只有scanf()函数,scanf()函数在读取时不检查边界,所以可能会造成内存泄露.故VC++2005/2008中提供了scanf_s()函数,在调 ...
- C语言scanf_s()函数的用法
前言 今天开始学习C语言,看书学的挺快的,感觉很有趣,就想着敲下代码,结果错误百出,差点不想学了,果然编程是敲会的.下面说说第一个程序遇到的问题与心得 scanf_s()前身--scanf() 有的教 ...
- Android开发第一课--熟悉开发工具和第一个Android程序
一.创建新工程步骤: File-NewProject-Phone and Tablet-选择Empty Activity.(因为我们学习的手机安卓开发,所以选Phone and Tablet,活动模板 ...
- leangoo领歌敏捷开发工具新增任务到期提醒功能
新增 卡片任务可以设置到期提醒 在企业版中,你在给卡片任务设置开始/截止时间时,可以添加提醒,提醒设置成功后,系统会在到达提醒时间时,准时提醒卡片上的成员. 你可以设置准时.提前5分钟.15分钟.1天 ...
最新文章
- apigw鉴权分析(1-2)腾讯开放平台 - 鉴权分析
- Android 4.4 MediaRecorder系统结构
- 多云战略:企业如何精益求精?
- linux1.0内核下载,LINUX1.0 内核是系统的心脏 - 下载 - 搜珍网
- get post请求区别_网页常见的两种请求方式Get和Post
- HLG 数字去重和排序II【二叉排序树】
- 如何在C#中播放一些AVI短片,并且使背景透明
- 【windows】python打包后多进程引发的无限循环启动
- Awvs14下载与安装
- 国内外学术期刊的一些基本常识情况--A类B类--核心期刊普刊--分区等
- IDEA中enter键无法换行
- Prometheus告警实践
- W-GAN系 (Wasserstein GAN、 Improved WGAN)
- Amazon 4.7 星评,领域新经典,了解服务设计就读它
- (附源码)springboot 在线考试系统 毕业设计461317
- 建筑卫生陶瓷行业中国驰名商标新增10件
- 如何用java语言编写小游戏?(贪吃蛇)
- 用注册表修改Windows系统的MAC地址
- 3dmax 8.0 简体中文免安装版
- 三星I560 UCWEB7.0正式版下载 SISX安装包
热门文章
- VC#打包部署全攻略之(一、添加卸载程序)
- 网页文字对齐(CSS)
- springmvc静态资源;mvc:default-servlet-handler后Controller失效
- Mybatis-plus多表关联查询,多表分页查询
- Core Animation放大缩小;CAKeyframeAnimation
- Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0
- .NET(C#):警惕PLINQ结果的无序性
- linux 安装lnmp
- snakebar 的使用
- 利用InfoPath实现SharePoint Server 2013列表的级联选择(Cascading Drop Down List)