我有这段代码,以便将一些文件加载到内存中,进入data。
我想读取同一路径中的三个文件:一个 XML、一个 PNG 和一个 TTF 字体文件。三个都已成功打开,其大小如size所示。不幸的是,只有 XML 和 PNG 被读入 data。
TTF 文件获得正确的 size,同样正确的 fread result,但空(非空)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 字节,然后是更多字符。所以它实际上并不是空的;而是空的。你只是错误地假设了它。