我有此代码段,以便将某些文件加载到内存中,并加载到 数据 中。
我想在同一路径中读取三个文件:一个 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);
}
您能为这个问题带来一些启发吗?
非常感谢。
答案 0 :(得分:0)
空字节并不神奇地意味着找到它的任何内容的结尾。它只是许多C标准库函数使用的约定。一个文件包含一个空字节然后再包含更多字符是完全有效的。这正是您的data
中的内容:一个空字节,然后是更多字符。所以它实际上不是空的。您只是错误地假设是这样。