關於fseek不能定位大於2G檔案的問題

2021-08-31 11:31:50 字數 462 閱讀 6845

最近在進行檔案斷點續傳的時候用到了fseek來定位檔案位置,一開始用小檔案測試沒有發現什麼問題,但是用大於2g的檔案測試的時候fseek列印出錯,查相關資料,發現fseek的第二個引數型別是long,也就是說只能定位2g以內的檔案,另外有兩個類似的函式fseeko和fseeko64,fseeko類似於fseek,不同的是fseeko的第二個引數型別是off_t,另外還有乙個巨集#define _file_offset_bits 64可以將off_t指定為64位,從而可以定位大檔案,fseeko64則直接支援定位大檔案,不幸的是fseeko和fseeko64是實現相關的,至少在我的平台上fseeko不支援#define _file_offset_bits 64這個巨集,更沒有fseeko64這個函式。

/*檔案大於2g的時候會有相容性問題*/

if(startpos <= 2147483647)

}else

}當然如果檔案大於4g,就得另想辦法了!

linux下操作大於2G檔案

1 包含所有標頭檔案以前,先定義這些巨集 ifndef use file offset64 define use file offset64 endif ifndef use largefile64 define use largefile64 endif ifndef largefile64 so...

C語言操作大於2G的檔案

tips 1.當檔案小於2g時,使用fseek和ftell可以獲取檔案的大小,必須是這兩者搭配。2.當檔案大於4g時,使用 fseeki64和 ftelli64,如果不確定自己操作的檔案大小建議使用 fseeki64和 ftelli64 3.這個兩個函式的引數是一致的,通用。解釋一下為什麼fseek...

Linux C 讀寫超過2G的大檔案 注意事項

在專案中做大檔案的增量讀寫,遇到了問題 fopen value too large for defined data type.習慣性地根據這個提示查閱的有關資料顯示 1 工具鏈太老了 海思的工具鏈我目前找不到更換的方法,也為了穩定性,不再增加新的ulibc庫 2 檔案系統的 inde是 64位的 ...