我在我的文件加載器的工作,我決定還是用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