为什么要清缓存
各位哥哥姐姐,我有一事不明,在什么情况下要清理缓存?
能给我这个初学者深入讲解一下吗?谢谢了
呵呵.简单的说
象scanf是从输入流缓冲区中读取值的.
而并非从键盘(也就是终端)缓冲区读取
而一般的情况下. scanf是遇到回车(\n)而结束的.
可是.他接受的值并没有\n 所以.这个\n很多时候是留在输入流缓冲区的
因为 scanf是从输入流缓冲区读取值.所以.在下一次的 scanf 会继续读取这个\n (当然.scanf遇到\n结束.所以造成了一次输入失败.)
问题是.很多的时候不会发生这种情况.这个我也不太明白其中的道理.不过 多数时候遇到 scanf 输入失败的情况就是这个原因
在值得提的一点是
getchar是从输入流缓冲区读取的
而getche是从键盘缓冲区读取的.