函数“ fread()”不读取特定文件类型?

时间:2019-05-27 14:25:23

标签: c++ fread

我有此代码段,以便将某些文件加载​​到内存中,并加载到 数据 中。

我想在同一路径中读取三个文件:一个 XML ,一个 PNG 和一个 TTF 字体文件。这三个都已成功打开,其大小显示在 size 中。不幸的是,只有 XML PNG 被读入 数据

TTF 文件获得正确的 大小 ,同样正确的 结果 读取,但 数据 为空(不为空), fp-> _ base 为空。

  char* data;
  size_t size = 0;
  FILE *fp = fopen(completeFilePath, "rb");
  if (fp != NULL) {
    fseek(fp, 0, SEEK_END);
    size = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    data = new char[size];
    size_t result = fread(data, sizeof(char), size, fp);
    fclose(fp);
  }

您能为这个问题带来一些启发吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

空字节并不神奇地意味着找到它的任何内容的结尾。它只是许多C标准库函数使用的约定。一个文件包含一个空字节然后再包含更多字符是完全有效的。这正是您的data中的内容:一个空字节,然后是更多字符。所以它实际上不是空的。您只是错误地假设是这样。