scanf()被忽略的分隔符,还在输入缓冲区里吗?

void main (void)
{
int a,b;
char c;
scanf("%d%d",&a,&b);
c=getchar();
printf("a=%d b=%d c=%d\n");
}

输入:1(空格)2(回车)
输出:a=1(空格)b=2(空格) c=10
(回车)(光标,程序结束)

我想讨论的是:在输入1和2之间的那个空格符,我们知道它被忽略了,可是它还在输入缓冲区里吗?如果没有,它到哪里去了?

7个回答

被忽略了就没有了。你可以去看scanf的源代码。所谓被忽略就是没有代码逻辑将它拷贝到任何变量中。

scanf函数读取时是在缓冲区的,函数执行完被释放

应该不在输入缓存区,它没有实际的意义,根本没有进入缓存,就当没有输入过好了!

在键盘上按键应该都会进入缓冲区,scanf()只是去缓冲区取按键值,取到空格就忽略掉不将他赋值给变量。
可以看看这个http://blog.csdn.net/fxwzzbd/article/details/2514042

scanf读取空格时是忽略了的。。。

从键盘读入键盘缓冲区的数据,读取时应该在,读取完了应该就释放了

一般为行缓冲,读取一行到缓冲区,到下一行就刷掉,重新读

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐