gpt4 book ai didi

c - fread 只有 .PNG 文件的前 5 个字节

转载 作者:太空狗 更新时间:2023-10-29 16:50:56 25 4
gpt4 key购买 nike

我制作了一个简单的资源打包器,用于将我的游戏的资源打包到一个文件中。一切都很顺利,直到我开始编写解包程序。我注意到我打包的 .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;
}

有人可以指出我的愚蠢错误吗?

最佳答案

Can somebody please point out my stupid mistake?

Windows 平台,我猜?

使用这个:

FILE* f = fopen("test.png", "rb");

而不是这个:

FILE* f = fopen("test.png", "r");

参见 msdn进行解释。

关于c - fread 只有 .PNG 文件的前 5 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3543069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com