• scanf()不会检查输入的边界,因此输入的数据可能会溢出,导致程序出错
  • scanf_s()更安全,其会检查输入的边界

如:

char ch[6];
scanf("%s",ch);

若此时输入数据为abcdefghijk,则f以后的内容将溢出到别的空间,可能会导致程序运行错误


若使用
scanf_s("%s",ch);

则输入数据abcdefghijk,只会接受abcdef六个输入,其余的不接受


若是
scanf_s("%s",ch,6);
则输入数据abcdefghijk,只会接受abcde五个输入,因为ch[6]要放置"\0".

PS:输入字符串时建议使用这个


PS:

  • scanf_s()最后一个参数n是接收缓冲区的大小(即ch的容量),表示最多读取n-1个字符.

  • 输入 字符串 时建议使用接受3个参数的scanf_s(),并且注意输入时长度不要超过n(容量)-1;
    输入数字可使用接受2个参数的scanf_s()

  • vs2017已经不再使用scanf()输入数据,只能用scanf_s(),否则会报错

  • 本人仍处于摸索阶段,以上仅为个人阅读文章及实践后的一些理解

<C语言学习>scanf和scanf_s的区别相关推荐

  1. 浅谈scanf和scanf_s的区别,以及应对VS返回值被忽略的报错问题。

    文章目录 前言 一.scanf和scanf_s是什么? 二.分别分析 1.scanf 2.scanf_s 3其实scanf和scanf_s在使用时只会在vs中有不同. 前言 随着IT行业的火爆,不少初 ...

  2. scanf() 与 scanf_s() 的区别

    scanf() 函数 : scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为:scanf("<格式化字符串>",<地址 ...

  3. scanf与scanf_s的区别

    自从用VisualStudio2015之后就不愿再去使用Visual C++6.0了,但是最近在学数据结构图时,总是在字符的连续输入遇到困惑. 使用VS都知道,要用scanf_s对键盘读入数据. sc ...

  4. scanf()与scanf_s()的区别

    scanf() 函数 : scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为:scanf("<格式化字符串>",<地址 ...

  5. R语言学习:mode与class区别

    看书的时候看到书上说用mode()函数查看向量的类型,想起以前都是直接用class查类型,感觉自己混淆了两个函数的具体作用,那么这两个类型是否有什么区别呢? mode mode()返回的结果主要有: ...

  6. c语言scanf错误c4996,C语言杂谈(一)scanf()、scanf_s()与错误 C4996

    错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...

  7. C语言中,scanf与scanf_s的简单区别

    C语言中,scanf与scanf_s的简单区别 scanf()不会检查输入边界,可能造成数据溢出,scanf_s()会进行边界检查. 如name[5], scanf("%s",na ...

  8. IOS学习笔记07---C语言函数-scanf函数

    2013/8/7 IOS学习笔记07---C语言函数-scanf函数 ------------------------------ qq交流群:创梦技术交流群:251572072            ...

  9. C语言学习笔记09-数组、字符数组、字符串数组、二维数组(单字符输入输出putchar、getchar,字符串输入输出的scanf、gets、puts)

    C语言数组   数组作用:可以用来保存很多记录(可以看成一种大容器).一些简单游戏也基本由数组实现,如游戏地图(二维数组)等等.   一个数组 划分 多个单元(下标区分) -存放-> 多个同类元 ...

最新文章

  1. 十六、字符驱动及应用
  2. JavaScript 内置对象(一):Array 对象(构造函数、属性和方法)
  3. centos 更改mysql数据库目录位置_centos更改MySQL数据库目录位置
  4. 收藏|2021年阿里云开源镜像站最热门镜像王全梳理(附下载链接和Top20镜像王排名)
  5. 11. Container With Most Water
  6. Android控件— — —ImageView
  7. 今年四月份,发现我的文章被人全部复制了,抄到博客园了,连原文出处都没有,就算你写个参考文章也行呀
  8. 【Oracle】RedHat 6.5 安装 11g数据库
  9. 《How to debug PS4 game》
  10. python画立体温度分布图_Origin绘制3D立体温度分布图的方法
  11. cad2014点击工具栏闪退_cad2012闪退,点工具栏闪退但用快捷键画图不闪退
  12. 品荔枝赏文化,美丽乡村不一样的嘉年华
  13. 科技创新就要高浓度、高密度
  14. 推荐两款github敏感信息搜集工具(gsil、gshark)
  15. 类型 List 不是通用的;不能使用参数() 将它参数化
  16. 在安装office2003时,出现安装程序包的语言不受系统支持的错误,如何解决?
  17. php eot,php中理解print的EOT分界符
  18. DIY手动定制一个属于自己的软件安装管理器工具盘[二]
  19. 基于matlab山脊线,基于Matlab的标记分水岭分割算法
  20. Oracle 12c 创建新用户报错 - ORA-65096

热门文章

  1. 彭博使用_excel api
  2. Python学习路线2019升级版(课程大纲+视频教程+网盘资源下载)
  3. Collection概述与基本使用
  4. python读取网络摄像头的帧_python实现从本地摄像头和网络摄像头截取图片功能
  5. 在HTML中使用css3实现雪人动画效果
  6. USB协议与Windows USB设备驱动程序笔记
  7. 2019计算机考研百度云,2019计算机考研复习时间表(全年版)
  8. 科研信息基础设施的运行治理模式研究
  9. 关于过程改进和能力提升2-体制机制是关键
  10. 微软中国裁员曝光:在CD结束后!薪酬不变!