C语言 scanf的有关问题

C语言 scanf的问题!
#include <stdio.h>
int main(void)
{
 char ch;
 scanf("%c",&ch);
 for(ch='$';ch != 'g';scanf("%c",&ch))
putchar(ch);
}
在第一个scanf("%c",&ch)
连续输入Go well,young man!
后面的o well....数扰保存在那里呢?
从调试里看到第二个scanf("%c",&ch)
&ch都是取同一个地址,就说是GO well,young man!会自动填充到&ch里

------解决方案--------------------
先存放在缓冲区里面
------解决方案--------------------
Go well,young man!
先都放在输入缓冲区中。。然后scanf("%c",&ch)一次去读一个char大小的东西。。把它放在ch这个地址上。。
------解决方案--------------------
scanf对流的操作遵从类型匹配操作原则,如果类型不匹配,它将不读取输入流。 因此输入流将滞留,如果输入流不空,scanf不会等待用户输入,直接从缓冲区中输入. 

缓冲区的大小,因操作系统,标准库的不同而不同。。。。。。 用C在windows下256个字节或512个字节,而在c++中好像是4096个字节..