我制作了一个简单的资源打包器,用于将我的游戏资源打包到一个文件中。一切都很顺利,直到我开始编写解包器。我注意到我打包的 .txt 文件 - 26 字节 - 很好地从资源文件中出来,没有任何问题,所有数据都保留了。但是,当读取我打包在资源文件中的 .PNG 文件时,前 5 个字节是完整的,而其余的则完全无效。
我将其追溯到打包过程,我注意到 fread 仅读取 .PNG 文件的前 5 个字节,而我终其一生都无法弄清楚原因。它甚至会触发“EOF”,表明该文件只有 5 个字节长,而实际上它是一个 787 字节的 PNG 小多边形,100 像素 x 100 像素。
我什至通过制作一个单独的应用程序来简单地将这个 PNG 文件读入缓冲区来测试这个问题,我得到了相同的结果,并且只读取了 5 个字节。
这是那个小的独立应用程序的代码:
#include <cstdio>
int main(int argc, char** argv)
{
char buffer[1024] = { 0 };
FILE* f = fopen("test.png", "r");
fread(buffer, 1, sizeof(buffer), f);
fclose(f); //<- I use a breakpoint here to verify the buffer contents
return 0;
}
有人可以指出我的愚蠢错误吗?