Копировать элементы из fread в структуру - PullRequest
1 голос
/ 31 января 2020

Я читаю фрагменты из файла следующим образом:

unsigned short vol_buffer[vol_buffer_size]; //vol_buffer_size = SLICE_SIZE * 4. SLICE_SIZE = 759000 bytes

for (int j = 0; j < num_slps; j++){ //num_slps is 138 in this case
    nItemsRead = fread(&vol_buffer, SLICE_SIZE, 4, volFile);

}

Я хочу скопировать данные из vol_buffer в массив слайсов в структуре SliceProjLinePair:

typedef struct
{
    SliceHeaders slice_headers[4];
    unsigned short slices[4][RECON_IMG_NUM_X*RECON_IMG_NUM_Y]; // slice data
    unsigned short proj_lines_00[6][NUM_PROJ_COLS]; // 0 deg proj image lines
    unsigned short proj_lines_90[6][NUM_PROJ_COLS]; // 90 deg proj image lines
}__attribute__((packed)) SliceProjLinePair;

I Я пытаюсь сделать что-то вроде этого:

SliceProjLinePair *slice_packet;

memcpy(slice_packet->slices, &vol_buffer, vol_buffer_size);

Но этот memcpy вылетает. Как мне получить данные из буфера, чтобы они поместились в массив ломтиков?

Редактировать: Я сейчас распределяю структуру следующим образом:

 SliceProjLinePair *slice_packet = new SliceProjLinePair();

и она не падает, но это только заполняет значения в срезах [0]. Я хочу, чтобы он заполнял значения в срезах [0] через срезы [3].

...