打印二进制序列c ++的一部分

时间:2014-06-16 19:14:17

标签: c++ struct io binaryfiles

我已经从二进制文件中读取了一些结构指针。在我的结构中,有几个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的值,但我不知道怎么能这样做?

有人帮我吗?提前谢谢。

2 个答案:

答案 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));