| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1156 人关注过本帖
标题:关于getchar()的一点个人看法,对吗?
取消只看楼主 加入收藏
freepig
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-1-5
收藏
 问题点数:0 回复次数:1 
关于getchar()的一点个人看法,对吗?

getchar一次只能接收一个字符,这个地球人都知道,但请大家看下面

void main()
{
char c;
c=getchar();
while(c!="$")
{
putchar(c);
c=getchar();
}
}
运行:abcdefg(输入)
abcdefg (显示)
好了,那么我们可以肯定这个是putchar这个家伙所为
那么问题来了,在循环体中也有一个getchar(),为什么在putchar时没有执行getchar()呢?
所以我猜getchar的工作原理是这样的,首选会监察C语言运行时的某个特定的缓冲区(在那里?我也不知道),如果在缓冲区里有字符,则取出,并移动指针,如果没有,则会转向标准输入设备,比如键盘。

后来我又做了下这样的实验:
abcdefg(输入)
abcdefg (显示)
123456$(输入)
123456(显示)
注意哦,我这是这一次执行的,在显示完abcdefg后缓冲区空了,我又输入了123456$

写得比较乱,而且有些问题也是猜的,不知道是不是这样的,希望有个达人来帮我看看,我现在特想知道,到底有没有那个“特定的缓冲区”,存在




[此贴子已经被作者于2006-4-10 20:54:25编辑过]

搜索更多相关主题的帖子: getchar 看法 
2006-04-10 20:53
freepig
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-1-5
收藏
得分:0 
以下是引用Knocker在2006-4-11 11:20:00的发言:

1.stream
C程序会打开三个stream, stdout stdin stderr
2.
getchar只会在遇到newline后去stdin取字符,这就是所谓的行缓冲
3,i/o函数有两种,缓冲与非缓冲(UNIX C i/o)

说到点子上了
明白了
谢谢,高!


2006-04-12 13:19
快速回复:关于getchar()的一点个人看法,对吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011716 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved