问题描述
- scanf()被忽略的分隔符,还在输入缓冲区里吗?
-
void main (void)
{
int a,b;
char c;
scanf("%d%d",&a,&b);
c=getchar();
printf("a=%d b=%d c=%dn");
}输入:1(空格)2(回车)
输出:a=1(空格)b=2(空格) c=10
(回车)(光标,程序结束)我想讨论的是:在输入1和2之间的那个空格符,我们知道它被忽略了,可是它还在输入缓冲区里吗?如果没有,它到哪里去了?
解决方案
被忽略了就没有了。你可以去看scanf的源代码。所谓被忽略就是没有代码逻辑将它拷贝到任何变量中。
解决方案二:
scanf函数读取时是在缓冲区的,函数执行完被释放
解决方案三:
应该不在输入缓存区,它没有实际的意义,根本没有进入缓存,就当没有输入过好了!
解决方案四:
在键盘上按键应该都会进入缓冲区,scanf()只是去缓冲区取按键值,取到空格就忽略掉不将他赋值给变量。
可以看看这个http://blog.csdn.net/fxwzzbd/article/details/2514042
解决方案五:
scanf读取空格时是忽略了的。。。
解决方案六:
从键盘读入键盘缓冲区的数据,读取时应该在,读取完了应该就释放了
解决方案七:
一般为行缓冲,读取一行到缓冲区,到下一行就刷掉,重新读
时间: 2024-12-09 16:39:00