使用结构 c++ 读取压缩文件 Gzread
reading compressed file Gzread using struct c++
如何在 C++ 中读取压缩结构格式的数据?
这是数据结构。
struct test
{
unsigned int test3;
unsigned char test1[4096];
unsigned int test2;
} foo;
我们如何读取使用 gzread 写入文件的结构?
这是我尝试过的。
gzread(Handle,&foo.test3, sizeof(&foo.test3)); //64
gzread(Handle,&foo.test1, sizeof(&foo.test1)); //4096
gzread(Handle,&foo.test2,sizeof(&foo.test2)); //4
但是,我得到的数据是错误的。我犯了什么错误?
如何读取以结构格式保存的文件的示例将帮助我做到这一点。
当你执行&foo.test1
时,你会得到一个指针,当你在该指针上使用sizeof
时,你会得到指针的大小,而不是它指向的内容。根据平台的不同,这将是4
(对于 32 位平台)或8
(对于 64 位平台)。
要使代码正常工作,应放弃对sizeof
操作使用 &
操作数:
gzread(Handle, &foo.test3, sizeof(foo.test3));
gzread(Handle, &foo.test1, sizeof(foo.test1));
gzread(Handle, &foo.test2, sizeof(foo.test2));
但是,它可能仍然不正确!如果文件是用另一个顺序写入的怎么办?或者如果完整的结构是一次性编写的,可能的填充和所有?您需要完全按照所写的方式阅读它。
另外,您必须确保文件以二进制模式打开,否则您可能会得到奇怪的结果。
相关文章:
- 浏览压缩文件与游览解压缩它们
- 如何在视觉工作室中使用C++解压缩压缩文件 (.zip)
- 霍夫曼解码压缩文件
- 如何以非阻塞方式压缩文件
- 从本地代码访问apk中的压缩文件(从zip中读取zip)
- 如何将多个协议缓冲区的消息写入可附加的压缩文件中?
- 使用结构 c++ 读取压缩文件 Gzread
- 使用Qt qUnCompress功能解压缩文件
- 如何将二进制数据写入压缩文件
- 使用boost iostreams将数组读写到压缩文件中
- 压缩和解压缩文件 C++
- 在C++中,如何在使用gzstream编写压缩文件时检查错误
- 对解压缩文件(popen)的权限被拒绝
- 无法打开压缩文件
- Qt-包括DLL和压缩文件
- 如何检查 zip 文件或压缩文件是否存在
- 如何压缩文件夹使用 lzma sdk
- 在霍夫曼压缩后将代码表存储在压缩文件中,并从此表构建用于解压缩的树
- c++中的压缩文件IO
- 通过套接字发送和接收压缩文件