2013-10-24 32 views
0

根據unix手冊頁ftell要麼返回-1來表示錯誤。真的很大的文件ftell錯誤

函數定義是:

long int ftell (FILE * stream); 

long int是一個32位整數(你需要long long 64位)

然而(-1L) == 0x00000000FFFFFFFF LL這應該是真正的大文件的有效值(四圍4GB),在這種情況下,我們如何知道是否發生了錯誤或者我們只有一個非常大的文件?

+0

您可以檢查'errno'或切換到'off64_t ftello64(FILE * stream)'。遇到大於2^63字節的文件比具有大於2^31字節的文件要少。 – Neet

+0

@奈特把你的評論作爲答案。 – doron

+0

「哪裏長int是一個32位整數」 - 我猜**沒有。**沒有保證/要求。在任何明智的64位實現中,實際上它是64位長。 (你讀得對--Windows不算是一個「明智的實現」)。 – 2013-10-24 12:16:59

回答

2

您可以檢查errno或使用稱爲off64_t ftello64(FILE *stream)的64位版本ftell