我在我的文件加载器的工作,我决定还是用FREAD和FSEEK读孔文件到一个字节的缓冲区,因此对于下一更新,而不是保持较好我做了什么,现在我想知道是否没有简单的方法将这个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));
哪里码? – 2012-07-25 18:11:41
**编辑**发现错误,错误发生在memread函数中,现在我已经修复它,对任何事都抱歉!我修正了代码,如果有人感兴趣! – user1509548 2012-07-25 18:19:43
BTW:这是你试图阅读的着名的Fast Tracker XM格式吗? – 2012-07-25 18:28:58