我无法设置一个向量值,它被设置成一个结构,一个结构,一个向量,作为一个空指针给出。有点复杂。
这些定义如下:
typedef struct
{
unsigned short int sensor_value[3];
double accelerometer[3];
} Accelerometer_t;
typedef struct
{
unsigned short int sensor_value[3];
double magnetometer[3];
} Magnetometer_t;
typedef struct
{
unsigned short int sensor_value[3];
double gyroscope[3];
} Gyroscope_t;
typedef struct
{
unsigned short int roll;
unsigned short int pitch;
unsigned short int yaw;
} IGRF_diff_t;
typedef struct
{
Magnetometer_t mag;
Gyroscope_t gyr;
Accelerometer_t acc;
IGRF_diff_t state;
} Attitude_t;我想用文件中的数据来设置传感器的值。我用这个:
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].acc.sensor_value[0], &((Attitude_t *)buffer)[i].acc.accelerometer[0]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].acc.sensor_value[1], &((Attitude_t *)buffer)[i].acc.accelerometer[1]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].acc.sensor_value[2], &((Attitude_t *)buffer)[i].acc.accelerometer[2]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].mag.sensor_value[0], &((Attitude_t *)buffer)[i].mag.magnetometer[0]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].mag.sensor_value[1], &((Attitude_t *)buffer)[i].mag.magnetometer[1]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].mag.sensor_value[2], &((Attitude_t *)buffer)[i].mag.magnetometer[2]);缓冲区是一个空*,正确地分配为Attitude_t*1,在本例中(但1可以更改),我的值为0,数据正在正确读取(使用“普通”变量进行测试)。但是这个由指针、转换、向量和结构组成的迷宫不起作用。它只设置acc.sensor_value、acc.accelerometer、mag.sensor_value、mag.magnetometer等。其余的值为零,或者是奇怪的值(我认为是默认值)。
发布于 2013-12-01 18:34:02
几乎总是,经过几个小时的挣扎,当我来到这里问,我突然意识到和解决办法。这一次是打印功能(我有一个读取和打印这个结构的“通用”函数),没有正常工作,让我很生气。现在它运行得非常完美(即使是在可怕的版本中)。
感谢您的评论。
https://stackoverflow.com/questions/20315441
复制相似问题