У меня есть код 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, ничего не изменилось.
Надеюсь, что кто-то может помочь решить эту проблему.
Спасибо.