C语言 scanf()和gets()函数的区别

1.相同点:scanf( )函数和gets( )函数都可用于输入字符串

2.不同点:两者在功能上有所区别,具体区别如下:

要实现如下需求“从控制台输入字符串”有如下两种实现方式:

1>使用gets()函数实现

使用上诉代码实现时,我们会发现控制台打印如下信息:[即警告gets()是不安全的]

gets()函数总结:

(1)gets() 从标准输入设备读取字符串,以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区。

(2)可以用来输入带空格的字符串。

(3)可以无限读取,不会判断上限,因此使用gets不安全,可能会造成溢出

2>使用scanf()函数实现

使用上诉代码实现时,我们会发现控制台打印如下信息:【输入:hello BJS150940 但是只能输出:hello】

scanf()函数总结:
(1)scanf() 以 空格 或 回车符 结束读取,空格 或 回车符 会遗留在缓冲区。
(2)不能直接输入带空格的字符串。
注意:scanf()函数如何才能输入带空格的字符串,应使用:【具体代码和输出内容如下:】

scanf("%[^\n]", a);  //%[]输入字符集, [^\n] 表示除了'\n'之外的字符都接收,即可以接收空格,这个可以用来输入带空格的字符串

说了那么多两个输入函数的区别,就上课那个例子循环输入一个字符,怎么样才能保证输入正常呢,仅需添加一句代码(取出缓冲区里特殊的空格和\n即可)即可具体代码段如下:

C语言 scanf()和gets()函数的区别相关推荐

  1. c语言scanf与gets区别,C语言 scanf()和gets()函数的区别

    C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...

  2. C语言scanf与gets函数的区别

    C语言中scanf与gets函数最大的区别在于:用gets可以输入带空格的字符串,用scanf不可以输入带空格的字符串. #include<stdio.h> int main() {cha ...

  3. c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别

    描述 接口与类的关系 类与接口是两个概念,不能混淆. 接口概念 程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务.面向过程语言最基本的单元是过程和函数. ...

  4. C语言——scanf()函数的具体详解

    目录 一.两种用法 二.从scanf角度看输入 三.格式字符串中的普通字符 一.两种用法 1.使用scanf()读取基本变量类型输入:scanf("%d",%a); 2.使用sca ...

  5. C语言--gets、puts、scanf、printf函数详细用法与区别(小白也能看懂,看不懂私信骂我)

    目录 一.前言 二.函数  gets().scanf() 深度解析 (1)头文件 (2)scanf()函数 (3)gets()函数 重点:(4) gets(a); 与 scanf("%s&q ...

  6. C语言宏和函数的区别详解。

    ⭐️ 往期文章 ✨链接1:C语言文件打开关闭详解.文件顺序读写详解. ✨链接2:C语言文件随机读写详解(fseek.ftell.rewind). ✨链接3:C语言scanf/fscanf/sscnaf ...

  7. C语言交换函数:传值函数与传址函数的区别

    1.传址函数典例 想必初识C语言函数的同学会遇到这样的问题: 当你想要写一个交换函数:交换输入的两个数字的值.明明将要传的两个数字传上去了,函数里的交换写法也没有问题,可为什么运行时会错呢?这就牵扯到 ...

  8. C语言scanf函数奇遇记

    C语言scanf函数奇遇记 作者:ocean    撰写日期:2011-11-20 博客链接:http://oceanspace.tk 看<The C Programming Language& ...

  9. C语言 memcpy 和 strcpy 函数区别 - C语言零基础入门教程

    目录 一.memcpy 函数/strcpy 函数简介 二.memcpy 函数/strcpy 函数实战 1.strcpy 函数属于字符串拷贝 2.memcpy 函数属于内存拷贝 三.猜你喜欢 零基础 C ...

最新文章

  1. 理解值和对象-快照图
  2. 在Visual Studio 2019中修改项目名
  3. 2010年杭电计算机研究生复试---笔试编程
  4. 制作一个功能丰富的Android天气App
  5. 集算器访问HTTP数据的代码示例
  6. html打包apk_将打包彻底一键化!Unity和Jenkins真是绝配
  7. 2013吉林通化邀请赛 1004 D-City 并查集求连通分支数
  8. 5G网络架构、网络接口及协议栈
  9. Redis6.0.6_06_Redis 集群
  10. FileZilla Server目录乱码问题的解决
  11. BoundsChecker检查内存泄露 使用步骤
  12. 玩转字符串篇--数据遍地是,看你取不取
  13. 屏幕撕裂及掉帧原因与解决方案
  14. android调用拨号界面拨打电话功能,Android实现拨打电话功能
  15. 契约锁电子签章在食品行业全产业链的应用场景
  16. 移动互联网时代电商如何突围?
  17. 网站UI设计的注意事项
  18. java彩票源码开源带界面,带系统
  19. python分态密度图_学术干货丨能带结构和态密度图的绘制及初步分析
  20. 计算机ata分数分配,分数N锁相环发送器ATA5749功能与工作原理

热门文章

  1. OPENNMS的后台并行管理任务
  2. node.js 实现扫码二维码登录
  3. Xcode 5.1 编译模拟器以及真机都能使用的静态库
  4. MySQL Cluster 用户权限共享 (各sql节点同步)
  5. 白盒测试不是测试,更不高级
  6. 一键了结CUP100%问题
  7. 枚举类型用法_Mybatis-plus常见用法总结三
  8. vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元
  9. acrobat 控件可以发布吗_短视频可以同时在多个平台发布吗?
  10. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句