当前位置: 代码迷 >> C语言 >> 如何存取键盘缓冲区?
  详细解决方案

如何存取键盘缓冲区?

热度:272   发布时间:2005-12-20 22:26:00.0
如何存取键盘缓冲区?

请大家看下面的程序片断:
#include<stdio.h>
viod main()
{
int i;
while(getchar()!=10)
i++; /*输入一段字符串,通过指针向前移动得到字符个数*/
......


得到的字符个数可以用来为输入的字符串开辟一个动态存储区,但是要想把字符串放进这个存储区,就需要让已经到达最后一个字符的指针返回到第一个地址。

我查了半天,只知道一个ungetc()可以使指针返回一个元素的地址,但还是没有办法回到字符串的首地址.............

求教达人,再拜!

[此贴子已经被knocker于2005-12-22 19:41:30编辑过]

搜索更多相关的解决方案: 缓冲区  字符  键盘  存取  指针  

----------------解决方案--------------------------------------------------------
大哥,请教一下,你的指针在那里?
----------------解决方案--------------------------------------------------------

再输入流中


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

你觉得这个怎么样:
在定义指针的时候,定义两个. 一个用来计算字符串的长度,另一个就一直指在首地址处。


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

可是,一楼的,指针是缓冲区中的指针呀,不是内存中的,我还没有把数据移到内存中呢。
缓冲区中的指针我不知道怎么控制呀!
再拜达人!


----------------解决方案--------------------------------------------------------
1。你为什么要控制缓冲区?

2。你怎么会认为“我还没有把数据移到内存中呢”


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

呵呵...返回地址吧!哪有返指针的?


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

可能还有误解,举个例子:
我输入abcde,现在它在缓冲区里了。然后让指针从a到e计数(此时,指针指到了e),再通过malloc为abcde在内存中开辟一段动态地址,但此时地址中无内容,要将abcde从缓冲区移到这一段动态地址中,我个人观点,只有将指针从e移到a,将abcde移动到内存中了。

可是划线部分我就不清楚了,只知道有个什么ungetc函数。。。。。

再拜达人!


----------------解决方案--------------------------------------------------------
你直接将你要实现的目的说出来吧。

象你上面所说的,只能自己重写IO函数才能实现。你不能再使用C的所有读写缓冲区的IO函数库函数
----------------解决方案--------------------------------------------------------
0040:001A BUFF_HEAD DW ? ;键盘缓冲区的首地址
0040:001C BUFF_TAIL DW ? ;键盘缓冲区的末地址
0040:001E KB_BUFFER DW 16 DUP(?) ;16个输入量的空间
0040:003E KB_BUFFER_END LABEL WORD
这个就是键盘缓冲区,是一个栈,BUFF_HEAD和BUFF_TAIL是缓冲区的两个地址指针.当HEAD指和TAIL指针相等时,说明缓冲区为空.



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