标题:关于getchar()的一点个人看法,对吗?
只看楼主
freepig
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-1-5
 问题点数:0 回复次数:11 
关于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
柔美
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-4-5
得分:0 

你这写的是什么啊 while(c!="$")

是这样吗?  "S"


MSN::zhengmeier@ Email::chentianqiao06@ TM::619969970
2006-04-10 21:47
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
得分:0 
正在迷糊
2006-04-10 21:51
仁者无敌
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2006-3-5
得分:0 
就没有看懂楼主是什么意思,但是我没有发现新的问题!

I am a programmer !
2006-04-10 21:58
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 
这觉得这个问题比较有意思呀,有启发意义!

幽幽黄桷兰----建四狼
2006-04-10 21:59
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
以下是引用freepig在2006-4-10 20:53:00的发言:

那么问题来了,在循环体中也有一个getchar(),为什么在putchar时没有执行getchar()呢?



你怎么看出来的?

[此贴子已经被作者于2006-4-10 22:15:42编辑过]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-10 22:13
本人已死
Rank: 1
等 级:新手上路
威 望:1
帖 子:183
专家分:0
注 册:2005-9-20
得分:0 
以下是引用freepig在2006-4-10 20:53:00的发言:

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

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

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

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





除了发现楼主有话有问题外....没发现什么其它问题.............鉴定完毕...........无意义贴


爸爸告诉我:女人喜欢有钱的男人;妈妈告诉我:女人喜欢有貌的男人。我翻翻钱包,又照照镜子,然后我哭了
2006-04-10 22:26
queyapahaha
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-4-5
得分:0 
就是能能输入一个字符串
直到回车为止 !!!!!!!

我为程狂!!
2006-04-11 09:12
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

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


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-04-11 11:20
crazyrabbit
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:150
专家分:0
注 册:2006-3-15
得分:0 
你们到底在研究什么呀,?
不是很简单的吗?

http://www./bbs/boke.asp?crazyrabbit.index.html 欢迎大家来此讨论问题!
2006-04-11 12:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-56614-1-1.html




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

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