| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3619 人关注过本帖
标题:如何存取键盘缓冲区?
只看楼主 加入收藏
zhoudavid
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-15
收藏
 问题点数:0 回复次数:13 
如何存取键盘缓冲区?

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


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

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

求教达人,再拜!

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

搜索更多相关主题的帖子: 缓冲区 字符 键盘 存取 指针 
2005-12-20 22:26
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
大哥,请教一下,你的指针在那里?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-20 22:28
zhoudavid
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-15
收藏
得分:0 

再输入流中

2005-12-21 22:55
strawberry
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-11-30
收藏
得分:0 

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


我知道交流对于软件人是多么的重要! 所以我希望长期待在这里!
2005-12-22 02:45
zhoudavid
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-15
收藏
得分:0 

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

2005-12-22 10:31
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
1。你为什么要控制缓冲区?

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


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-22 11:08
学C中
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2005-10-30
收藏
得分:0 

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


2005-12-22 11:26
zhoudavid
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-15
收藏
得分:0 

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

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

再拜达人!

2005-12-22 12:29
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
你直接将你要实现的目的说出来吧。

象你上面所说的,只能自己重写IO函数才能实现。你不能再使用C的所有读写缓冲区的IO函数库函数

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-22 12:41
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
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指针相等时,说明缓冲区为空.



九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-22 12:53
快速回复:如何存取键盘缓冲区?
数据加载中...
 
   



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

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