當讀取二進制文件時,我有一個非常奇怪的問題。在C++中奇怪的文件讀取問題:fread()
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); 他們都是'>'; 任何人都可以幫助我嗎? 感謝
有什麼特別的原因,你不使用'ifstream'?這不是非常C++ - y – Cogwheel 2010-07-02 18:21:46
選擇一種語言來標記您的問題,C或C++。你會得到更好的答案。 – 2010-07-02 18:31:50
因爲,稍後我會爲此文件進行實時流式傳輸。我不確定文件流是否可以正常工作。 – Grey 2010-07-02 18:33:14