三年游戏人 2015-09-04 16:33 采纳率: 50%
浏览 3450
已采纳

c语言的scanf在按下“Enter”键后到底发生了什么事情??

图片说明
图片说明

我有几个问题;
上面的解释是输入71.82后按下回车,回车被c1当作字符吸收了,c2吸收了'A';但是上面输入完b=7后,不是按下了回车键吗,最终输入了71.82按下回车后,键盘缓存中不是存留着两个回车吗?为什么c2不是吸收到回车??
scanf在按下“Enter”键后到底发生了什么事情?

  • 写回答

5条回答 默认 最新

  • TseNing 2015-09-04 16:53
    关注

    执行scanf()函数时,在键盘输入回车会把之前的输入连同回车符一起送入缓存区,然后通过格式控制符匹配对应的变量,%d %f %e等,如果格式控制字符串中连写 会以空白字符(包括回车换行)区分不同变量,但%c会把任意单个字符认为有效输入,所以c1的值是个回车符。由于输入是按顺序匹配的,第一个回车被认为是区分不同变量的空白字符。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?