关于C语言getchar()读取字符的问题
我一直没明白缓冲输入到底是什么意思,比如输入一个数再回车,getchar()还把最后的回车读入了。比如下面的程序#include<stdio.h>charget(void...
我一直没明白缓冲输入到底是什么意思,比如输入一个数再回车,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()的功能岂不是差不多了?求大神指点下 展开
#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()的功能岂不是差不多了?求大神指点下 展开
2个回答
2019-09-24
展开全部
你输入了第一个字符‘e’符合while的条件 ch>'c'&&ch!='q'
所以程序输出"^^&&&\n"
第二个换行符‘\n'被getchar( )吃掉
程序有输出一次"^^&&&\n"
如果你输入'a'~'c'
程序会返回输入值
所以程序输出"^^&&&\n"
第二个换行符‘\n'被getchar( )吃掉
程序有输出一次"^^&&&\n"
如果你输入'a'~'c'
程序会返回输入值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询