【发布时间】:2013-01-26 23:50:17
【问题描述】:
短篇小说
我需要将传入消息数据添加到固定长度的缓冲区。
如果缓冲区已满,则用新的替换最旧的消息数据(或缓冲区中最旧的字节)。这是某种队列。
这种队列如何实现?
程序是用 C 语言编写的,我对 C 语言知之甚少(更像是没有)。
长篇大论
我有一个程序正在接收来自设备的消息。
此消息可能具有可变长度并具有关联的 Id。
目前,该程序仅保留每个 Id 收到的最新消息。
此消息由程序内部保存,只有在有配置或用户发送命令(实时)以获取给定 ID 的接收消息时才会显示给用户。
现在需要保留给定 Id 的几条收到的消息(不仅仅是最后一条)并返回它们。
它们不需要单独退回。它们可以在一个块中全部返回(将多个消息视为设备正在返回的一段内存数据)。
目前有一个固定长度的缓冲区来保存接收到的消息和一个变量来跟踪接收到的消息长度。
所以我正在考虑使用现有的缓冲区并继续向其中添加新消息。
如果另一条消息出现并且缓冲区上没有更多空间,那么我应该覆盖最旧的消息数据。类似于队列的东西。
尤其是实现这种队列的最后一部分是我需要更多帮助的地方。
该程序是用 C 编写的,不是我做的,我对 C 的了解有限(不是说不存在 :)
我真的应该先学习 C,但现在没有时间了 :)
我已经完成了 C#、Java、Javascript 等等。
对管理这个队列之王有什么帮助吗?
谢谢
【问题讨论】:
-
@Aniket,OP 要求的是一个想法而不是代码,所以我建议不要关闭它。
-
在数组中搜索循环队列
-
这就是我所需要的。谢谢。
标签: c data-structures