关于网友提出的“ C语言 scanf的问题!”问题疑问,本网通过在网上对“ C语言 scanf的问题!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: C语言 scanf的问题!
描述: #include
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里
解决方案1: scanf对流的操作遵从类型匹配操作原则,如果类型不匹配,它将不读取输入流。 因此输入流将滞留,如果输入流不空,scanf不会等待用户输入,直接从缓冲区中输入.
缓冲区的大小,因操作系统,标准库的不同而不同。。。。。。 用C在windows下256个字节或512个字节,而在c++中好像是4096个字节..
解决方案2: 先存放在缓冲区里面
解决方案3: Go well,young man!
先都放在输入缓冲区中。。然后scanf("%c",&ch)一次去读一个char大小的东西。。把它放在ch这个地址上。。
以上介绍了“ C语言 scanf的问题!”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2633294.html