getchar()的迷惑

yingzijuntuan 2011-12-20 12:02:31

while (scanf("%c",&ch1))
{
getchar();//吸取回车键,不然会循环下一个会是回车的ASCII码
ch2=ch1-32;
printf("%c %d\n",ch1,ch1);
printf("%c %d\n",ch2,ch2);
printf("请输入ASCLL码表的字符:");
}
}

什么叫吸取回车键呀?不明白,麻烦给讲清楚点呀。。。
...全文
143 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjthdbg 2011-12-22
  • 打赏
  • 举报
回复
一般getchar()是用在输入了内容后再输入字符%c时用的,是因为了缓冲区中残留的回车写入到%c去;
也可以这样用,在%c前加空格去掉回车:
while(scanf(" %c",&ch2))
{
ch1=ch2-32;
printf("%c,%d\n",ch1,ch1);
printf("%c,%d\n",ch2,ch2);
printf("请输入ASCLL码表的字符:");

}
z1058017535 2011-12-22
  • 打赏
  • 举报
回复
要理解输入缓冲区
yingzijuntuan 2011-12-21
  • 打赏
  • 举报
回复
那么一般的for循环给用scanf赋值的话,是不是最好也要用一个getchar呢?但是,实际上,我以前也是没有用那个的呀?怎么回事的呢?
黯然 2011-12-20
  • 打赏
  • 举报
回复
这个不是我帮LZ改的程序么= =
LS的答案+1;
Gloveing 2011-12-20
  • 打赏
  • 举报
回复
scanf 从缓冲区里取走输入的字符之后,你的回车键留在了缓冲区中,
getchar读取回车键之后,把它从缓冲区里删除,就“吸取”了回车键
追求执着 2011-12-20
  • 打赏
  • 举报
回复
getch()从输入缓冲区中接受一个字符.回车在那多余的,所以让getch()获取后可以进行后面的正常进行
IVERS0N 2011-12-20
  • 打赏
  • 举报
回复
Linux-Torvalds 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 w28050 的回复:]

需要清空缓存,fllush(std);
因为getchar只会从缓存中取字符,所以在使用之前,要清除缓存的内容
否则它不会理睬你的输入,因为你输入之前,缓存有东西,他已经取了,语句也执行完了
[/Quote]fflush对输入流来说,结果是未定义的。一般不使用fflush(stdin);
而是使用getc(stdin)或者fgetc(stdin)或者getchar()或者标准输入流的数据。使标准
输入缓冲区下一个字符的位置为缓冲区的起始位置,缓冲区的剩余字符数为0.
自信男孩 2011-12-20
  • 打赏
  • 举报
回复
就是把输入缓冲区中的回车取出来,也相当于清空缓冲区。
AnYidan 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 agoago_2009 的回复:]
scanf 从缓冲区里取走输入的字符之后,你的回车键留在了缓冲区中,
getchar读取回车键之后,把它从缓冲区里删除,就“吸取”了回车键
[/Quote]

++
mm11214014 2011-12-20
  • 打赏
  • 举报
回复
1L正解。
w28050 2011-12-20
  • 打赏
  • 举报
回复
需要清空缓存,fllush(std);
因为getchar只会从缓存中取字符,所以在使用之前,要清除缓存的内容
否则它不会理睬你的输入,因为你输入之前,缓存有东西,他已经取了,语句也执行完了
w28050 2011-12-20
  • 打赏
  • 举报
回复
需要清空缓存,fllush(std);
因为getchar只会从缓存中取字符,所以在使用之前,要清除缓存的内容
否则它不会理睬你的输入,因为你输入之前,缓存有东西,他已经取了,语句也执行完了
Cs1275 2011-12-20
  • 打赏
  • 举报
回复
学习哈...
[Quote=引用 1 楼 agoago_2009 的回复:]

scanf 从缓冲区里取走输入的字符之后,你的回车键留在了缓冲区中,
getchar读取回车键之后,把它从缓冲区里删除,就“吸取”了回车键
[/Quote]
logicouter 2011-12-20
  • 打赏
  • 举报
回复
1楼正解

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧