输入函数scanf与getchar的区别与原理
先看下面代码
为什么getchar没有等我输入而直接执行下面的语句了呢?
原因是当我们从键盘输入数据时会首先放在输入缓冲区而scanf遇见空格或回车便停止读入,getchar遇见空格或回车也会读取。所以当我们输入123456时,getchar没等我们再次输入便执行后面的语句了 ,原因是在我们输入完123456后按下了回车,getchar把回车读取走了
再看下面代码
可以看见在多加了一个getchar之后程序在等我们再一次输入Y之后再运行后面的语句
问题来了当缓冲区里有很多数据时,我们又该如何输入我们想要的数据呢?看下面的例子:
这时缓冲区里有很多我们不需要的数据,一个getchar显然无法帮助我们,这时我们可以巧用循环。请看下面例子: