Невозможно присвоить значение из массива в структуре члену другой структуры - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть код C ++, скомпилированный с Visual Studio 2015, который включает в себя множество структур, но у меня есть проблема с двумя из них. Давайте назовем их struct A и struct B.

Struct A был выделен с помощью mallo c, эта структура включает член, называемый data. Этот член включает в себя еще один член - массив символов с именем status.

Давайте предположим, что я сделал что-то вроде этого:

#define SIZE 32
typedef struct
{
    // Some members...
    char status[SIZE];
    // some more members...
}Data_s;
typedef struct
{
    // some members...
    Data_s data;
    // some more members...
}A;
struct A * a = new A();
a->data.status[some_number] = 5; // Some value, just for example.

(0 <= some_number <= 31) </p>

Структура B, выделенная в стеке:

typedef struct
{
    // some members...
    unsigned char x;
    unsigned char y;
    unsigned char z;
    // some more members...
}B;

struct B b;
memset (&b, 0, sizeof(B));

Эта структура включает в себя много членов, большинство из которых являются беззнаковыми символами. Давайте предположим, что у нас есть x, y и z. Итак, я написал это:

b.x = 3; // Working, some example.

Но этот, вызывающий у меня проблемы:

b.y = a->data.status[some_number];

Не имеет значения, какое значение у меня в a->data.status[some_number], я всегда буду видеть 0 в b.y.

Я пытался использовать memcpy и memcpy_s, ничего не изменилось.

Надеюсь, что кто-то может помочь решить эту проблему.

Спасибо.

...