getchar()的问题

#关于getchar()的用法:

img

img


以上程序可以多行输入,回车不会引起getchar()开始读取,直到输入#才开始读取

img

img


而这个程序,输入一行后,回车,getchar()直接读取,而不能继续下一行的输入
想请教这两个程序相同的while ((ch = getchar()) != '#')为什么有不同的结果以及getchar()函数的细节。

那是因为第二段代码在循环过程中进行了输出导致的,第一段没有输出,所以你感觉好像是可以连续输入,这是错觉
实际上在你回车后,程序都会进行输入响应的,也就是getchar()都会开始工作

第二个程序是因为 里面有输出语句吧,输入换行后,程序 先处理输入流里的数据并打印 ,然后又等你输入