我一直没明白缓冲输入到底是什么意思,比如输入一个数再回车,getchar()还把最后的回车读入了。比如下面的程序
#include<stdio.h>
char get(void);
int main(void)
{
char ch;
ch=get();
printf("%c",ch);
return 0;
}
char get(void)
{
int ch;
ch=getchar();
while((ch<'a'||ch>'c')&&ch!='q')
{
printf("^^&&&\n");
ch=getchar();
}
return ch;
}
如果输入e,回车,则输出是
^^&&&
^^&&&
我的问题是,getchar读的不是第一个字符e么?难道读完第一个e后,自动又读下一个字符回车了?
那岂不是getchar都可以当读入字符串用了,那跟gets()的功能岂不是差不多了?求大神指点下
我知道回车也是字符,但是getchar不是读入一个字符么?为啥连后面的字符也读入了呢?流到底是什么意思?教材上也讲流了,但没说啥是流...
追答你那个不是循环吗?第二个字符也循环了呀。
追问ch=getchar(),不是把第一个字符赋给ch么....怎么把第二个字符也给ch的....
追答当你输入一个字符e ,再按一下回车,是不是按了两个字符 ,当第一个e字符读取后,是不是还要读取一个字符再循环,你连while循环都没有搞明白呀!
追问您的意思是getchar一次后,这个字符就从缓冲区里被读走了,再getchar时,就又从缓冲区里读下一个字符了是吧?