0
根據unix手冊頁ftell
要麼返回-1來表示錯誤。真的很大的文件ftell錯誤
函數定義是:
long int ftell (FILE * stream);
凡long int
是一個32位整數(你需要long long
64位)
然而(-1L) == 0x00000000FFFFFFFF LL
這應該是真正的大文件的有效值(四圍4GB),在這種情況下,我們如何知道是否發生了錯誤或者我們只有一個非常大的文件?
您可以檢查'errno'或切換到'off64_t ftello64(FILE * stream)'。遇到大於2^63字節的文件比具有大於2^31字節的文件要少。 – Neet
@奈特把你的評論作爲答案。 – doron
「哪裏長int是一個32位整數」 - 我猜**沒有。**沒有保證/要求。在任何明智的64位實現中,實際上它是64位長。 (你讀得對--Windows不算是一個「明智的實現」)。 – 2013-10-24 12:16:59