读取二进制文件时,我遇到一个非常奇怪的问题。
void metaDataProcess(FILE *f){
unsigned __int32 obLength;
unsigned __int32 numProp;
char* objPath;
unsigned __int32 rawDataIndex;
int level;
fread(&obLength,sizeof(obLength),1,f);
objPath=new char[obLength];
cout<<"i am at"<<ftell(f)<<endl;
fread(&objPath,sizeof( char),obLength,f);
objPath[obLength]='\0';
cout<<"i am at"<<ftell(f)<<" the object path is "<<objPath<<endl;
level=getOrCreateNode(objPath);
fread(&rawDataIndex,sizeof(rawDataIndex),1,f);
“ objPath”没有得到该位置的期望值。
在010编辑器中,该位置为“ /”,但我将其读取为“>”。这很奇怪,因为从ftell的打印输出值来看,它是正确的位置,并且在此之前和之后读取的值都是期望值(obLength = 1;下一个值rawDataIndex == 4294967295)。
当我输入'/'时我怎么会得到'>'。我试过fread(&objPath,sizeof(unsigned char),obLength,f);
fread(&objPath,1,obLength,f);
他们都是'>';
有人可以帮我吗?
谢谢
最佳答案
objPath=new char[obLength + 1];
cout<<"i am at"<<ftell(f)<<endl;
fread(objPath,sizeof( char),obLength,f);
objPath[obLength]='\0';