求教求教

花海呀 2020-02-01 07:59:55
这个getchar();怎么突然出现,跟蔡徐坤一样,毫无征兆,啥叫缓冲区,为啥这么写
...全文
282 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2020-02-01
  • 打赏
  • 举报
回复
看看scanf函数的说明, scanf遇到回车,空格,tab等分隔符时候的处理方法 简单的说 scanf的时候,遇到用户输入回车才开始真正的读取数据, 没有回车的时候,一直等待用户输入/修改/删除输入的内容 用户所有输入的内容,系统会把他们按照输入的顺序放在内存当中,这段内存就叫做键盘缓冲区 键盘缓冲区保留了用户输入的所有的字符包括回车,甚至多行都在里面(复制,粘贴这种情况下) 除了%c(指定读取字符), scanf在从缓冲区提取数据的时候,会把上一行输入的回车留在键盘缓冲区当中 下次读取非字符类数据的时候会自动过滤这个回车,但是读取字符类型就会把这个回车键读取出来 例如 第一行要输入一个整数,第二行要输入一个字母这种需求,就需要特殊处理 第一行输入整数,并回车;scanf获得了整数,但是回车还在缓冲区里面,如果再scanf(“%c”)就会返会你不想要的这个回车了 要过滤掉这个回车,就用getchar() 然后再scanf的时候, 输入字母再回车,就可以正常获得输入的字母了 仔细看scanf的帮助函数吧
一星伴月 2020-02-01
  • 打赏
  • 举报
回复
大致可以理解为就是读取回车符

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧