我已经制作了一个简单的资源打包程序,用于将我的游戏资源打包到一个文件中。一切都进行得很顺利,直到我开始编写解包器。我注意到我打包的 .txt 文件大小为 26 字节,在不出现任何问题的情况下从资源文件中恢复,所有数据被保留。
然而,当我读取我在资源文件中打包的 .PNG 文件时,前 5 个字节完好无损,而其余部分则完全变成了空值。
我追踪了这个问题并发现 fread 只读取了 .PNG 文件的前 5 个字节,但我无法理解为什么会这样。甚至触发了 "EOF",表明该文件只有 5 个字节长,而实际上它是一个 100×100 像素的小多边形,大小为 787 字节的 PNG 文件。
我甚至通过制作一个单独的应用程序来测试此问题,只需将该 PNG 文件读入缓冲区即可,结果也是同样的,只读取 5 个字节。
这是那个小应用程序的代码:
然而,当我读取我在资源文件中打包的 .PNG 文件时,前 5 个字节完好无损,而其余部分则完全变成了空值。
我追踪了这个问题并发现 fread 只读取了 .PNG 文件的前 5 个字节,但我无法理解为什么会这样。甚至触发了 "EOF",表明该文件只有 5 个字节长,而实际上它是一个 100×100 像素的小多边形,大小为 787 字节的 PNG 文件。
我甚至通过制作一个单独的应用程序来测试此问题,只需将该 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;
}
能否有人指出我的愚蠢错误?
{}
是完全可以的,而且效果相同。 - Billy ONeal