结构体数据的二进制读取
我定义了如下的结构体:
struct AHRSInfo
{
double GyroX;
double GyroY;
double GyroZ;
double ACC_X;
double ACC_Y;
double ACC_Z;
float Pitch;
float Roll;
float Heading;
};
AHRSInfo IMUAngInfo;
完了初始化如下:
IMUAngInfo.Roll = 2.46;
IMUAngInfo.Pitch = -20.342;
IMUAngInfo.Heading = 179;
IMUAngInfo.GyroX = 23.342;
IMUAngInfo.GyroY = 76;
IMUAngInfo.GyroZ = 34;
IMUAngInfo.ACC_X = -34;
IMUAngInfo.ACC_Y = 45;
IMUAngInfo.ACC_Z = 99.8;
在测试结构体长度时,显示是64,我测了,double是8个字节,float是自个字节,剩下的4个字节是怎么回事啊.
还有就是用如下的语句写入和读取二进制文件均不对.
写入: FILE *fp;
fp=fopen("SDFileName.bin","ab+");//不存在打开(创建文件)
fwrite(&IMUAngInfo,sizeof(IMUAngInfo),1,fp);//
读取:
FILE *fp;
fp=fopen("SDFileName.bin","ab+");//不存在打开(创建文件)
FILE *ReadFile;
char ReadOut[100];
fread(ReadOut,1,64,fp);
fwrite(ReadOut,1,64,ReadFile);
fclose(fp);
fclose(ReadFile);
谢谢!