У меня очень странная проблема при чтении двоичного файла.
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 (без знака), obLength, f);
fread (& objPath, 1, obLength, f);
они все «>»;
кто-нибудь может мне помочь с этим?
спасибо