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开发工具提供的一个功能相同的安全标准输入函数)相关推荐

  1. Windows Mobile 5.0 中为开发人员提供的新功能(3)

    Windows Mobile 5.0 中为开发人员提供的新功能(3) Pocket Outlook 增强功能 Pocket Outlook 向用户和应用程序开发人员提供了易于使用的 PIM.将 Poc ...

  2. 基于Windows Mobile 2003 的 Pocket PC 为开发人员提供的新功能(转)

    对于 Pocket PC 用户和开发人员来说,基于 Microsoft® Windows Mobile® 2003 的 Pocket PC 是一个非常重要的里程碑.Pocket PC 2003 基于新 ...

  3. Windows Mobile 6 中为开发人员提供的新功能(1)

    Windows Mobile 6 中为开发人员提供的新功能(1) 2007年06月10日 星期日 10:29 Jim Wilson,JW Hedgehog, Inc. 摘要 Windows Mobil ...

  4. JetBrains公司旗下开发工具简介

    JetBrains公司旗下有下列的几种开发工具: Intellij IDEA: 用于开发 Java 等: WebStorm:用于开发 JavaScript.HTML5.CSS3 等前端技术: PyCh ...

  5. 解决scanf_s函数报错:没有为格式字符串传递足够的参数

    报错:scanf_s函数报错:没有为格式字符串传递足够的参数 int main() {char s1[20] = "i m name";char *p1, *p2;char s3[ ...

  6. 【C语言:精准打击】scanf_s()函数与scanf()函数的相关解决方案

    国际标准ANSI C中没有scanf_s()函数,只有scanf()函数,scanf()函数在读取时不检查边界,所以可能会造成内存泄露.故VC++2005/2008中提供了scanf_s()函数,在调 ...

  7. C语言scanf_s()函数的用法

    前言 今天开始学习C语言,看书学的挺快的,感觉很有趣,就想着敲下代码,结果错误百出,差点不想学了,果然编程是敲会的.下面说说第一个程序遇到的问题与心得 scanf_s()前身--scanf() 有的教 ...

  8. Android开发第一课--熟悉开发工具和第一个Android程序

    一.创建新工程步骤: File-NewProject-Phone and Tablet-选择Empty Activity.(因为我们学习的手机安卓开发,所以选Phone and Tablet,活动模板 ...

  9. leangoo领歌敏捷开发工具新增任务到期提醒功能

    新增 卡片任务可以设置到期提醒 在企业版中,你在给卡片任务设置开始/截止时间时,可以添加提醒,提醒设置成功后,系统会在到达提醒时间时,准时提醒卡片上的成员. 你可以设置准时.提前5分钟.15分钟.1天 ...

最新文章

  1. apigw鉴权分析(1-2)腾讯开放平台 - 鉴权分析
  2. Android 4.4 MediaRecorder系统结构
  3. 多云战略:企业如何精益求精?
  4. linux1.0内核下载,LINUX1.0 内核是系统的心脏 - 下载 - 搜珍网
  5. get post请求区别_网页常见的两种请求方式Get和Post
  6. HLG 数字去重和排序II【二叉排序树】
  7. 如何在C#中播放一些AVI短片,并且使背景透明
  8. 【windows】python打包后多进程引发的无限循环启动
  9. Awvs14下载与安装
  10. 国内外学术期刊的一些基本常识情况--A类B类--核心期刊普刊--分区等
  11. IDEA中enter键无法换行
  12. Prometheus告警实践
  13. W-GAN系 (Wasserstein GAN、 Improved WGAN)
  14. Amazon 4.7 星评,领域新经典,了解服务设计就读它
  15. (附源码)springboot 在线考试系统 毕业设计461317
  16. 建筑卫生陶瓷行业中国驰名商标新增10件
  17. 如何用java语言编写小游戏?(贪吃蛇)
  18. 用注册表修改Windows系统的MAC地址
  19. 3dmax 8.0 简体中文免安装版
  20. 三星I560 UCWEB7.0正式版下载 SISX安装包

热门文章

  1. VC#打包部署全攻略之(一、添加卸载程序)
  2. 网页文字对齐(CSS)
  3. springmvc静态资源;mvc:default-servlet-handler后Controller失效
  4. Mybatis-plus多表关联查询,多表分页查询
  5. Core Animation放大缩小;CAKeyframeAnimation
  6. Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0
  7. .NET(C#):警惕PLINQ结果的无序性
  8. linux 安装lnmp
  9. snakebar 的使用
  10. 利用InfoPath实现SharePoint Server 2013列表的级联选择(Cascading Drop Down List)