关于C语言For循环的一个问题~!

biser 2004-09-30 08:18:58
前几天看C语言的数,发现了一个这样的For循环,内容如下:

for ( ; (c =getchar())!='/n '; )
printf("%c",c);

我认为输出结果是:
CCoommppuutteerr
但计算机却显示为:
Computer
Computer


书上的解释是:
请注意,从终端键盘向计算机输入时,是在输入回车后才送到内存缓冲区的,而不是从终端敲如一个字符马上输出一个字符,……,然后每次从缓冲区度一个字符,然后输出。


求问:
什么是内存缓冲区,他是如何工作的?
...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
keenyliu 2004-09-30
  • 打赏
  • 举报
回复
'/n'表示回车,在你没有回车之前,就会从buffer(缓冲区)读字符。
如果你一个字母一个回车,效果就不同了;但是要到达你认为的效果就不是这么简单可以实现的。

buffer的概念你可以自己搜索一下,是和内存管理有关,而内存管理是操作系统的理论,提示你这么多相信你自己可以更好的理解了。。。
mobydick 2004-09-30
  • 打赏
  • 举报
回复
这个循环之前肯定还有代码,肯定是输出从键盘上输入的字符的代码,所以,问题可以这样解释,首先,你必须输入一个字符串,然后敲回车,这时,你输入的字符串才被显示在显示器上,然后,程序从你输入的字符串里读取字符,再依次显示在显示器上。所以,就是两个computer.
qingyun1020 2004-09-30
  • 打赏
  • 举报
回复
时间太长了,都忘了
还是帮你顶吧
roapzone 2004-09-30
  • 打赏
  • 举报
回复
这样??
eradium 2004-09-30
  • 打赏
  • 举报
回复
如果要你想要的结果就把 getchar()换成 getch()
getch()是直接读的,getchar()读的必须是回车以后的字符串。
athossmth 2004-09-30
  • 打赏
  • 举报
回复
好像getc是直接读?记得有一个flushall是强制性清空缓存

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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