在C ++中访问struct的成员

时间:2016-09-18 12:48:36

标签: c++ struct binary fopen

我正在尝试使用结构定义访问二进制文件中的某些数据成员。

在thi文件中,它应该包含一个名为fxID的结构成员。在下面的代码中,我试图访问fxID,但它不起作用,它返回的数字不正确。更奇怪的是,如果我将fxID更改为fxVersion,我会得到相同的数字,所以看起来printf根本没有提取正确的数据。

FILE *p;
struct myStruct x;
p=fopen("myfile.fxb","rb");

size_t n = fread(&x, sizeof(x), 1, p);
if (n != 1) {
    // Some error message
    //printf("%i", sizeof(x));
} else {
    printf("\n\nID:%d\n",  x.fxID);
}

知道为什么我无法访问fxID中的数据吗?根据我在printf语句中使用的类型,我得到了奇怪的结果。例如,如果我使用printf(“%d”,x.fxID),我会得到数字1606416148;但是,这是错误的,因为我相信fxID是1447514692.这是因为字节序吗?我知道该文件是大端,它提到需要在我链接的头文件中转换它。

可能是因为使用了Int吗?或者错误的类型?

0 个答案:

没有答案