scanf("%s", str1);

scanf() 读取到空格时就认为字符串输入结束了,不会继续读取了。

第一个 scanf() 读取到 "Java" 后遇到空格,结束读取,将"Python C-Sharp" 留在缓冲区。第二个 scanf() 直接从缓冲区中读取,不会等待用户输入,读取到 "Python" 后遇到空格,结束读取,将 "C-Sharp" 留在缓冲区。第三个 scanf() 读取缓冲区中剩下的内容。

gets 是 get string 的缩写,意思是获取用户从键盘输入的字符串,语法格式为:

gets(arrayName);当输入的字符串中含有空格时,输出仍为全部字符串,这说明 gets() 函数不会把空格作为输入结束的标志,而只把回车换行作为输入结束的标志,这与 scanf() 函数是不同的。

总结:如果希望读取的字符串中不包含空格,那么使用 scanf() 函数;如果希望获取整行字符串,那么使用 gets() 函数,它能避免空格的截断。

转载于:https://www.cnblogs.com/CATHY-MU/p/5911275.html

scanf和gets的差别相关推荐

  1. c语言如果读不到数据就跳过,4,VS常见问题解决(一闪而过、等问题)不断更新...

    当然入门学c可以用VS,但是深入就不应该用VS(MSVC)编译器了,毕竟VS2017还没有完全支持C99(这个从VS2017没有实现变长数组可见) 但是想看c源码,还是 1. 推荐用 *nix系统 2 ...

  2. c语言从html控件sscanf,sscanf与sprintf在C语言中的用法

    sscanf与sprintf是C语言处理字符串的利器,可以用于快速格式化字符串. 我们知道,C语言中的输入和输出函数:printf和scanf第一个参数是格式化输出的内容. 例如%d为整数,%f为浮点 ...

  3. scanf(%s,a)和gets(a)的差别

    gets()和scanf()的区别在于输入的字符串是否中间有空格:对于前者,只有遇到"\n"时才停止输入,而对于后者,出现"\n"或空格都停止输入.

  4. C/C++ scanf 函数中%s 和%c 的简单差别

    首先声明:在键盘中敲入字符后,字符会首先保存在键盘缓冲区中供scanf函数读取(scanf.getchar等函数是读取缓冲区,getch函数是读取的控制台信息,即为直接从键盘读取).另外特别注意键盘上 ...

  5. 在c语言中scanf什么时候用,scanf什么时候用??c语言?

    scanf函数原型折叠 int scanf( const char *format, ... ); scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为: sc ...

  6. scanf 用法大全

    关于标准库函数scanf 论坛上很多人对scanf的不太了解,导致程序出错,我想把scanf的具体用法贴出来,希望大家可以共同进步,有什么不对的地方可以提出来. int scanf(char *for ...

  7. C语言scanf函数用法详细解释!!!

    函数名: scanf  功 能: 执行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

  8. C++ scanf()函数

    scanf()函数的头文件是<stdio.h>,函数原型为int fscanf(FILE*stream, constchar*format, [argument...]); 其功能为根据数 ...

  9. C语言中使用‘scanf’输入与‘printf’输出的几个例子

    C语言中使用'scanf'输入与'printf'输出格式及几个程序举例 初学者最常使用的就是键盘输入(scanf)和输出(printf) scanf的调用格式为: #include<stdio. ...

最新文章

  1. LeetCode 52. N皇后 II
  2. 使用hyperopt(Bayesian optimization)为xgboost模型挑选最优参数进行模型构建、by Cross Validation
  3. LinkedHashMap分析
  4. [watevrCTF 2019]Baby RLWE
  5. oracle查表文件大小,Oracle表空间使用大小查询
  6. ORA-01658:无法为表空间XXX中的段创建initial区
  7. 【转】libpcap实现机制及接口函数
  8. rserve php,使用Rserve远程执行R脚本
  9. C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑
  10. 找不到tgp饥荒专用服务器,饥荒tgp版专用服务器搭建指南_游侠网
  11. C++笔记-基于邻接表的BFS(宽度优先遍历)
  12. Docker学习:容器之间单/双向通信 |--link /自定义网络实现互认容器别名 (理论篇)
  13. 03、STM8程序下载方法
  14. Android原生蓝牙音乐绑定、Sink端play流程
  15. stm32使用XR20M1172详细攻略·SPI转UART串口
  16. 了解Windows WDDM 驱动程序
  17. Numpy中reshape函数、reshape(1,-1)的含义(浅显易懂,源码实例)
  18. 光刻技术的原理和EUV光刻技术前景
  19. 1.1小程序内置tabbar和自定义tabbar区别
  20. 计算机原理最大系统框图,计算机控制系统原理框图.docx

热门文章

  1. NDK集成libjpeg和libpng
  2. 读者来信(1)——项目经理,不要迷信制度!
  3. 中小企业的当务之急:内部知识管理
  4. ubuntu18.10下面从视频中提取音频
  5. 根据地址形式分辨scala的一维数组和二维数组
  6. AttributeError: 'Bunch' object has no attribute 'data'
  7. 【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
  8. 自然哲学的数学原理_慢跑的数学原理(一):珍惜做的每一份功
  9. 学校计算机教学演示,案例演示在计算机基础教学中的运用
  10. 在ubuntu系统中删除软件的三种最佳方法