1
嗨,大家好。如果我想用WinAPI的使用SetfilePointer測試EOF
SetFilePointer(fi1, 0, NULL, FILE_CURRENT) != INVALID_SET_FILE_POINTER
或測試EOF?
SetFilePointer(fi1, 1, NULL, FILE_CURRENT) != INVALID_SET_FILE_POINTER
嗨,大家好。如果我想用WinAPI的使用SetfilePointer測試EOF
SetFilePointer(fi1, 0, NULL, FILE_CURRENT) != INVALID_SET_FILE_POINTER
或測試EOF?
SetFilePointer(fi1, 1, NULL, FILE_CURRENT) != INVALID_SET_FILE_POINTER
無論是確實的伎倆。第一個不會檢測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);
請記住,文件指針可以大於文件大小。例如,SetFilePointer/Ex(> filesize)後跟SetEndOfFile()通常用於展開或預先分配文件。所以你應該在比較中使用'> ='而不是'=='。 –