功能"fread()"不读取特定文件类型?

Function "fread()" not reading specific file types?

本文关键字:文件 类型 fread 功能 读取      更新时间:2023-10-16

我有此代码的剪辑,以便将某些文件加载到内存中,将其加入 data

我想阅读的相同路径中有三个文件: XML ,A png 和A ttf font文件。这三个都是成功打开的,其大小在 size 中显示。不幸的是,只有 XML png 才能读取 data

ttf 文件获取正确的 size ,同样适当的结果 fread ,但一个空的(不是null( data 和空的 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);
  }

您能把一些问题带入这个问题吗?

非常感谢。

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