c - C风格的字符串文件格式难题

标签 c string data-structures file-format null-terminated

我对我遇到的这个小问题感到很困惑。我有一个非索引文件格式 header 。 (更具体地说是 ID3 header )现在,这个 header 存储一个字符串或三个字节,用于确认数据实际上是一个 ID3 标签(TAG 是字符串 btw。)重点是,现在这个 TAG在文件格式中不是空终止的。所以有两件事可以做:

  • fread加载整个文件对于未终止的字符串比较,请使用 strncmp .但:
    1. 这听起来很老套
    2. 如果有人打开它并试图在事先不知情的情况下操纵字符串怎么办?
  • 另一种选择是加载文件,但 C 结构不应完全映射到文件格式,而是包含适当的空终止符,然后应使用唯一调用加载每个成员。但是,这也感觉很老套而且很乏味。

非常感谢您的帮助,尤其是那些具有处理此类问题实际经验的人。

最佳答案

解析任何内容时首先要考虑的是:这些字段的长度是固定大小还是以计数为前缀(它们本身的大小是固定的,例如,几乎每个图形文件都有固定大小/结构的标题然后是可变大小的像素序列)?或者,该格式是否具有以某种方式分隔的完全可变长度字段(例如,MPEG4 帧由字节 0x00、0x00、0x01 分隔)?通常这个问题的答案将大大有助于告诉您如何解析它。

关于c - C风格的字符串文件格式难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585025/

相关文章:

c - 打印对应于适当输入的月份

java - 错误是从java中的给定字符串中查找第二大数字

组合多个 block : check alphabet, 检查字符串长度,检查是否回文

c - 当变量定义为静态但声明为外部时没有警告或错误指示

C# 静态类与预定义字符串的结构

java - 如何将不同类型的对象添加到 Android 中的 HashMap 中?

algorithm - 快速检索中间元素的数据结构

algorithm - 在稀疏图上执行 Kruskal 算法的最佳数据结构?

c - 为什么 Clang 认为这些类型在开罗会发生冲突?

java - 在逗号分隔的字符串中查找单词的推荐方法?