永发信息网

C语言里如何设置缓冲区,

答案:4  悬赏:80  手机版
解决时间 2021-01-09 17:22
C语言里如何设置缓冲区,
最佳答案
将数据以链表形式顺序存放,新数据总是放在表尾,待处理的数据总是在头结点下的第一个结点,处理完毕则释放空间。
  缓冲器为暂时置放输出或输入资料的内存。缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。
全部回答
针对你的目的,一般做法是开个队列对历史信号进行存储。
新进来的信号存储到队列中,而程序处理队列中的第一项,处理完毕后把该项从队列中释放,如此反复。
很简单的定义一个数组,用两个变量下标来指向头和尾,新数据来尾++ 老数据处理完头++ 两个下标超过界限时从头开始循环利用 中间要考虑缓存数据空和数据满的情况

或者你动态分配空间,来一个信号分配空间,插入队列链表,处理完一个出队列,释放空间
将数据以链表形式顺序存放,新数据总是放在表尾,待处理的数据总是在头结点下的第一个结点,处理完毕则释放空间。

#define BufferSize 1024 // 合适的大小你知道的
typedef struct node {
char *buffer;
struct node *next;
}*linkList;

LinkList *InitList() {
LinkList *head;
head = (char *)malloc(size(node));
head->next = NULL:
return head;
}

void AddData(LinkList *head, char *data) { // 将新数据添加到表尾
LinkList *p = head;
LinkList *anode = (char *)malloc(size(node));
anode->buffer = (char *)malloc(size(BufferSize));
strncpy(anode->buffer,data,BufferSize);
anode->next = NULL:
while(p->next) p = p->next;
p->next = anode;
}

void DealData(LinkList *head) {
LinkList *p = head->next;
if(p) {
head->next = p->next;
// p->buffer指向的数据待处理
free(p->buffer); // 处理完毕,释放空间
free(p);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蒸发量大于多少吨的锅炉称大型锅炉?蒸发量小
想买点化妆品,就是不知道网易考拉海购可靠吗
成都有没有来钱快得偏门 已走投无路了
2015年选举法规定里面有没有八不准
4.9x9.9x4.9简便
邮一条裤子10元可以发什么快递?
Pudong No.1 RestaurantXu Guoqing, Mana
金口泛亚大道红绿灯有电子眼吗?
北京到抚顺每公斤多钱?
满分学习预约怎么需要这么久?!
28.00等于多少流量
有人知道这种原宿图怎么弄吗 求高手帮忙
把32.5缩小到原来的多少是0.325
鲤鱼塘工业区属于樟木头什么地区
1 2 5 6 8组成()()()×()()积最大
推荐资讯
胎儿205g±30g是多重
解答题1949年,在率领中央机关从西柏坡入迁北
单选题下列关于大洲、大洋面积大小的比较,正
歼20的发动机真的是WS-15吗?
英孚英语学完发什么证件
锥度轴承外直径35mm内直径17mm是什么型号锥度
脚底膝盖手指手掌有红块有点痒怎么回事
沈阳美发店发廊员工工资问题
液压机安全操作规程主要包括哪些?
明朝的灭亡可惜吗 明朝其实是很伟大的,可惜
5.6x12.5用简便方法计算怎么立式?
Word文档中的表格怎么求和?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?