首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C中优雅的二进制i/o?

C中优雅的二进制i/o?
EN

Stack Overflow用户
提问于 2010-11-14 09:48:09
回答 6查看 788关注 0票数 1

我最近使用C/C++加载了很多二进制文件,我被它是多么的不优雅所困扰。要么我得到了很多看起来像这样的代码(我已经离开了):

代码语言:javascript
运行
复制
uint32_t type, k;
uint32_t *variable;
FILE *f;

if (!fread(&type, 4, 1, f))
    goto boundsError;

if (!fread(&k, 4, 1, f))
    goto boundsError;

variable = malloc(4 * k);
if (!fread(variable, 4 * k, 1, f))
    goto boundsError;

或者,我定义了一个本地的压缩结构,这样我就可以更容易地读取固定大小的块。然而,在我看来,对于这样一个简单的问题-即将指定的文件读入内存-可以更有效、更具可读性的方式完成。有没有人有什么小窍门/窍门?我想澄清的是,我不是在寻找一个库或其他东西来处理这个问题;如果我正在设计自己的文件,并且必须对文件规范进行大量更改,我可能会受到诱惑,但现在我只是在寻找风格上的答案。

此外,你们中的一些人可能会建议mmap-I喜欢mmap!我经常使用它,但它的问题是它导致了处理未对齐数据类型的讨厌代码,这在使用stdio时并不真正存在。最后,我将编写类似于stdio的包装器函数,以便从内存中读取数据。

谢谢!

编辑:我还应该澄清我不能改变文件格式--有一个我必须读取的二进制文件;我不能请求另一种格式的数据。

EN

Stack Overflow用户

发布于 2010-11-14 09:54:48

您可能对protocol buffers和其他IDL方案感兴趣。

票数 -1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4175754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档