gpt4 book ai didi

c - 在给定为 void * 的 vector 内的结构内设置结构值

转载 作者:行者123 更新时间:2023-11-30 17:43:04 27 4
gpt4 key购买 nike

我无法将 vector 值设置为作为 void 指针给出的 vector 内的结构内的结构。有点复杂。

这些是定义:

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]);

buffer 是一个 void *,正确分配为 Attitude_t*1,在这种情况下(但 1 可以变化),i 的值为 0,并且数据正在被正确读取(使用“正常”变量进行测试)。但是这个由指针、转换、 vector 和结构组成的迷宫不起作用。它仅设置 acc.sensor_value[0]、acc.accelerometer[0]、mag.sensor_value[0]、mag.magnetometer[0] 等。其余的都是零,或者奇怪的值(我认为是默认值)。

最佳答案

几乎总是如此,经过几个小时的挣扎,当我到达这里询问时,我突然有了认识和解决方案。这次是打印功能(我有一个用于该结构的读取和打印“通用”功能),该功能无法正常工作并且让我很生气。现在它可以完美运行(即使是在可怕的版本中)。

感谢您的评论。

关于c - 在给定为 void * 的 vector 内的结构内设置结构值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20315441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com