我已经从二进制文件中读取了一些结构指针。在我的结构中,有几个unsigned int
整数。这是我的结构:
修改
typedef unsigned int INT32U;
typedef struct {
INT32U var1 : 16;
INT32U var2 : 8;
INT32U var3 : 1;
} myStruct;
typedef struct{
myStruct hdr;
INT32U additionalVar;
}MyStructSecond;
我用以下行读取二进制文件:
myStructSecond * pack;
FILE * stream = fopen(argv[1],"rb");
fread((INT32U*)pack->hdr,1,sizeof(myStruct),stream);
现在我想访问var1的值,但我不知道怎么能这样做?
有人帮我吗?提前谢谢。
答案 0 :(得分:1)
这会发生可怕的错误 - 你已经创建了一个指针,但没有实际的结构。
你想:
myStruct pack;
FILE * stream = fopen(argv[1],"rb");
ReadFile(stream, &pack, sizeof(pack));
然后您可以访问这些值,例如pack.var1
。
答案 1 :(得分:0)
我感觉问题是由于在ReadFile
调用中使用了尚未正确初始化的指针引起的。
我建议
myStruct pack;
FILE * stream = fopen(argv[1],"rb");
ReadFile(stream, &pack, sizeof(myStruct));
更新以回应OP的评论。
myStructSecond pack;
FILE * stream = fopen(argv[1],"rb");
fread(stream, &pack.hdr, sizeof(myStruct));