getchar就是从缓存里读取一个字符,这里的实际作用就是把前一次scanf遗留在缓存里的回车符给读取出来了,这样缓存里就没有遗留字符了,再次执行getchar或scanf读取字符的时候,就是从键盘读入字符了。
就是说scanf执行之后,虽然连回车符都放入了缓冲区,但是实际上回车符并未读给a,所以缓冲区还残留一个回车符,getchar之后就可以正常使用缓冲区,即可执行下面的scanf
scanf是不会接受回车和空格的,gets总是以\n结尾