请教一个 c/c++的问题

2022-10-19 18:13:03 +08:00
 zentraedi

怎么实现一个固定大小 m 的缓冲区,循环采集数据固定长度 n 存储到 m 中,m>n ,每次缓冲区装满之后就输出,要刚好装满,n 的数据不能丢失,n 和 m 不是倍数关系

1989 次点击
所在节点    程序员
10 条回复
GeruzoniAnsasu
2022-10-19 18:20:56 +08:00
考虑读写方法的实现

考虑缓冲区干啥,它本质上只是个内存区域
tyzandhr
2022-10-19 20:59:14 +08:00
和 STL 差不多。
每次写入的时候就检测 buffer 是否会溢出,要是溢出就扩容;你这里就是输出并清空。
wudicgi
2022-10-19 21:09:57 +08:00
circular buffer / ring buffer ?

“要刚好装满” 指的是什么?
liuguangxuan
2022-10-19 23:13:19 +08:00
dangyuluo
2022-10-20 00:18:45 +08:00
什么是刚好装满,比如 buffer 里还有 3 个字节剩余空间,要插入 4 个字符,怎么处理
DeWjjj
2022-10-20 02:41:22 +08:00
a = 函数外建固定大小为 m 的堆类。
a = 调用函数
函数(传 a 引用) => 枚举类(状态条件,数据){
接受数据;
大小判断;
a 内数据+读取 大于范围则拼接 足够大小的输出;
返回状态,及多余数据;
}
smdbh
2022-10-20 12:31:15 +08:00
难道不是每写一个字节判断是否到 m 尾,到了就输出 m ,然后从 m 头继续写?
zentraedi
2022-10-21 13:50:00 +08:00
已经搞好了
dangyuluo
2022-10-21 15:48:41 +08:00
@zentraedi 那就分享一下你的解决方案有头有尾啊😂
zentraedi
2022-10-24 17:52:14 +08:00
@dangyuluo 4 楼可以的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/888186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX