一、scanf和gets

1.不同点:

  char string[50];

  scanf("%s",string); //当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是不能接受回车,空格和tab键,他们仍会留在输入的缓冲区中。

  gets(string); //遇到回车认为输入结束,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中

2.相同点:

字符串接受结束后自动加'\0'。

二、scanf("%c",&c) 与 scanf(" %c",&c)

  后者只是在%前多了个空格,似乎没有什么区别,但使用起来区别是很大的。scanf()作单字符输入时规定只接收一个字符,但它却把回车符也作为字符对待的。这就造成程序中只有一个输入字符的scanf()语句时,问题还不大,但如果后面还跟着第二个scanf()字符输入语句,这个scanf()就把前面输入的回车符当作输入字符了。这就在输入逻辑上造成了混乱,达不到人们预期的愿望。有了这个空格,因为scanf()是跳过空格读字符的,就回避了这个问题。实践证明,这个空格放在%c后面也不能达到目的。应当说,这也是比较巧妙的应用!

三、scanf("%d",&n) 与 scanf("%d ",&n)

  这个是利用了上面二中的方法,如果程序scanf("%d",&n)之后要读char,会把读入n之后的空格读进ch,而scanf("%d ",&n)这里d后面多个空格,就相当于后面%c前多了个空格,不管是scanf("%c",&ch)还是ch=getchar(),都可以跳过那个回车。

最新文章

  1. IISExpress 调试使用学习,使用附加到进程进行快速调试
  2. NSNumber 、 NSValue 、 日期处理 、 集合类 、 NSArray(一)
  3. 瀑布流插件(jquery.masonry.js)
  4. grab jpegs from v4l2 devices
  5. Java 比较两个字符串的大小
  6. Eclipse MyEclipse 复制项目 复制现有项目 复制功能相似项目
  7. Low-rank approximations
  8. 【Java】 剑指offer(30) 包含min函数的栈
  9. istio实现自动sidecar自动注入(k8s1.13.3+istio1.1.1)
  10. 基于位置的服务——百度地图SDK练习
  11. Forward+ Shading架构
  12. Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
  13. 用MFC库函数AfxBeginThread()来创建线程
  14. 学号 20155219 《Java程序设计》第1周学习总结
  15. libgdx自制简易版Don't Touch The White Tile
  16. Flash对象插入到网页中的3px问题
  17. restful 分风格
  18. Scala学习——Scala By Example——to be continued
  19. 模拟函数调用 Simulation Exclusive Time of Functions
  20. 结合cocos2d-x开发配置sublime text

热门文章

  1. 2014 Super Training #8 A Gears --并查集
  2. POJ 2891 Strange Way to Express Integers【扩展欧几里德】【模线性方程组】
  3. 项目管理工具Redmine各功能测试
  4. 泛型类型的协变(covariant)和逆变
  5. 【WPF】Winform调用WPF窗体注意事项
  6. Unity小知识
  7. 反射中使用 BindingFlags.IgnoreCase
  8. Asp.Net MVC 4 Web API 中的安全认证-使用OAuth
  9. Caffe学习系列(5):其它常用层及参数
  10. [CareerCup] 14.6 CircularArray 环形数组