2013-05-18 56 views

回答

2

無論是確實的伎倆。第一個不會檢測EOF,第二個會移動文件指針,我猜這不是你想要的。

您應該通過調用SetFilePointerEx以「移動方法」FILE_CURRENT和零距離讀取文件指針。並通過調用GetFileSizeEx與文件大小進行比較。

LARGE_INTEGER pos, size; 
if (!SetFilePointerEx(hfile, 0, &pos, FILE_CURRENT)) 
    HandleError(); 
if (!GetFileSizeEx(hfile, &size)) 
    HandleError(); 
bool eof = (pos.QuadPart == size.QuadPart); 
+1

請記住,文件指針可以大於文件大小。例如,SetFilePointer/Ex(> filesize)後跟SetEndOfFile()通常用於展開或預先分配文件。所以你應該在比較中使用'> ='而不是'=='。 –