请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

输入缓存的影响

图片描述
老师为啥上图中的s输入后回车,这个回车停留在输入的缓存中不影响left、operator、right的输入,而下图中left、operator、right输入回车后,回车停留在输入的缓存中就影响了s呢,s的输出直接为换行符了?
图片描述

正在回答

1回答

第一个图,getchar会等待一个字符输入,你敲了一个回车,s就被赋值为回车字符了,你再输入算式,回车,scanf读取算式,回车仍然在缓冲区当中。

第二个图里面,你输入算式之后,回车,scanf只读取算式,你这时候敲得回车依然在缓冲区,被接下来的getchar直接读走了。

另外,缓冲区不是缓存。注意区分。

仔细想想。其实没啥。

1 回复 有任何疑惑可以回复我~
  • 提问者 wxz123 #1
    老师您好,第一张图中的getchar,假如我先输入一个a,再回车,那么这个回车就会在缓冲区中,这个缓冲区的回车为啥不会影响接下来输入的算式呢?
    回复 有任何疑惑可以回复我~ 2020-12-21 13:15:42
  • 因为scanf的格式符,d会忽略空白。
    回复 有任何疑惑可以回复我~ 2020-12-21 14:09:05
  • 你换成c试试就不一样了
    回复 有任何疑惑可以回复我~ 2020-12-21 14:09:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信