当前位置: 代码迷 >> C语言 >> 关于getchar()的一点个人看法,对吗?
  详细解决方案

关于getchar()的一点个人看法,对吗?

热度:305   发布时间:2006-04-10 20:53:00.0
关于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  看法  

----------------解决方案--------------------------------------------------------

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

是这样吗?  "S"


----------------解决方案--------------------------------------------------------
正在迷糊
----------------解决方案--------------------------------------------------------
就没有看懂楼主是什么意思,但是我没有发现新的问题!
----------------解决方案--------------------------------------------------------
这觉得这个问题比较有意思呀,有启发意义!
----------------解决方案--------------------------------------------------------
以下是引用freepig在2006-4-10 20:53:00的发言:

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



你怎么看出来的?

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


----------------解决方案--------------------------------------------------------
以下是引用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$

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





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


----------------解决方案--------------------------------------------------------
就是能能输入一个字符串
直到回车为止 !!!!!!!
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
你们到底在研究什么呀,?
不是很简单的吗?

----------------解决方案--------------------------------------------------------
  相关解决方案