我曾在一個節目這個片段中(在Visual Studio 2005):EOF在Visual Studio
if(_eof(fp->_file))
{
break;
}
它打破了封閉循環EOF達到時。但該程序無法解析文件中的最後幾千個字符。因此,爲了找出發生了什麼事,我這樣做:
if(_eof(fp->_file))
{
cout<<ftell(fp)<<endl;
break;
}
現在,我從FTELL得到的答案比實際的文件大小(不預期)的不同(小)。我認爲Windows可能會有些問題的文件,那麼我這樣做:
if(_eof(fp->_file))
{
cout<<ftell(fp)<<endl;
fseek(fp, 0 , SEEK_END);
cout<<ftell(fp)<<endl;
break;
}
好了,FSEEK()給出正確的答案(等於文件大小)和初始FTELL()失敗(如前所述)。
有什麼想法可能是錯誤的地方?
編輯:該文件以「rb」模式打開。
這是一個二進制文件或文本文件?你是否以正確的模式(二進制或文本)打開它? – Feanor
它以二進制模式打開... – c0da
用你最喜歡的十六進制編輯器打開文件,轉到那個字節,看看有什麼。然後你會得到你的答案。 –