关于FOR循环语句的疑问

anjsy6 2012-07-22 11:30:44
课件里面有个程序:

#include "stdio.h"
void main()
{
char a;
for(;(a=getchar())!='\n';) putchar(a);
putchar('\n');
}

意思就是输入非回车的字符,则输出该字符,否则,输出回车字符,我在VC上面运行后有这样的疑问,既然是循环语句,那么应该输入非回车的字符后,输出该字符(我每次输入一次字符,输出以后,再按键盘任意键,运行窗口就直接关闭了,根本没有输入下一个字符的机会),然后再继续输入非回车字符,再显示该字符,直到输入回车,再显示回车,然后结束。
疑问就是:为什么我每次只能输入一次,输出一次字符,然后窗口就关闭了,这还叫循环吗?难道是我对循环的概念有误解吗?
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

有缓冲的
什么意思,能说详细点吗?我才自学到FOR这里
[/Quote]

你对for的理解应该没有问题。有问题的是你对getchar的理解,getchar本身是靠回车来结束的,会车前的输入的字符都被缓冲起来了。也就是说你不回车的话getchar就一直在工作,循环体没有机会被执行,直到你回车导致getchar函数返回后,循环体才会执行。

参考下面的代码:

#include <stdio.h>
#include <conio.h>
void main()
{
char a;
for(;;)
{
a=getch(); // getch不带回显,但每接受到一个字符都会返回
if(a != 13)
{
putch(a);
}
else
{
break;
}
}
putchar('\n');
}
pathuang68 2012-07-22
  • 打赏
  • 举报
回复
anjsy6 2012-07-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

有缓冲的
[/Quote]什么意思,能说详细点吗?我才自学到FOR这里
pathuang68 2012-07-22
  • 打赏
  • 举报
回复
有缓冲的

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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