Я работал в своем загрузчике файлов и решил, что для следующих обновлений будет лучше, чем продолжать использовать fread и fseek читать файл дыры в буфер BYTE, и я тоже, теперь мне интересно, нет ли простого способа назначения часть этого буфера BYTE в структуру.
Я уже пытался создать временный буфер того же размера, что и структура, скопировать в него все нужные мне БАЙТЫ из исходного буфера и использовать memcpy, но это не сработало, я просто получил много случайных чисел (которые я думаю, что получаю их указатели, но я не знаю правильно).
Спасибо за ваше время!
Редактировать: НАСТОЯЩИЙ код
void memread(BYTE from[],int pos, void * to,size_t size)
{
BYTE * temp = new BYTE[sizeof(BYTE)*size];
for (unsigned int i = 0; i< 1+size; i++)
temp[i] = from[i+pos];
memcpy(to,temp,size);
}
... inside the file loader ...
fseek(fl,0,SEEK_END);
const int memory_size = (int)ftell(fl);
BYTE * memory = new BYTE[sizeof(BYTE)*memory_size];
fseek(fl,0,SEEK_SET);
for (int i=1;i<=memory_size;i++)
fread(&memory[i],sizeof(BYTE),1,fl);
fclose(fl);
int memory_pos = 0;
XM::Memory xm;
memset(&xm,0,sizeof(XM::Memory));
memread(memory,1,&xm.Header,sizeof(XM::Header));