[問題] fseek 超過4GB位置的問題

看板C_and_CPP作者 (Poker Face)時間13年前 (2011/09/08 16:25), 編輯推噓3(3019)
留言22則, 8人參與, 最新討論串1/1
開發平台(Platform): VS2008 問題(Question):需要在超過4G bytes 的檔案使用fseek(), 但是fseek似乎不支援超過4G bytes以上的檔案, 想請問有無其他function可以替代fseek(), 謝謝. -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.216.214

09/09 00:30, , 1F
VS 的話有 _fseeki64 可以用
09/09 00:30, 1F

09/09 00:30, , 2F
就用系統函式吧~
09/09 00:30, 2F

09/09 00:31, , 3F
09/09 00:31, 3F

09/09 00:32, , 4F
不然其實還是可以用 SEEK_SET + 數次 SEEK_CUR 達成
09/09 00:32, 4F

09/09 00:32, , 5F
seek()??? SetFilePointer()???
09/09 00:32, 5F

09/09 00:34, , 6F
樓上的一個要 fd 一個要 HANDLE 平常只用 FILE* 的用不來吧
09/09 00:34, 6F

09/09 00:37, , 7F
我有使用_fseeki64 , 但是似乎跟fseek一樣, 不能超過4gb
09/09 00:37, 7F

09/09 00:37, , 8F
不知道問題出在哪...
09/09 00:37, 8F

09/09 00:40, , 9F
你怎麼寫的...
09/09 00:40, 9F

09/09 00:42, , 10F
版龜2
09/09 00:42, 10F

09/09 00:42, , 11F
_fseeki64(fp,index*188,SEEK_SET)
09/09 00:42, 11F

09/09 00:44, , 12F
我是這樣寫的 不知道index*188會超過32 bits
09/09 00:44, 12F

09/09 00:44, , 13F
index*188會超過32 bits , 也就是超過4g bytes
09/09 00:44, 13F

09/09 00:47, , 14F
轉型...
09/09 00:47, 14F

09/09 00:47, , 15F
先把 index*188 印出來看看吧...
09/09 00:47, 15F

09/09 00:48, , 16F
(__int64)index*188 這樣?
09/09 00:48, 16F

09/09 00:53, , 17F
index*188需要轉行才能傳入嗎 這部分我沒有注意到..
09/09 00:53, 17F

09/09 00:53, , 18F
那我再試試看 感謝大家...
09/09 00:53, 18F

09/09 00:54, , 19F
沒轉型會溢位... 造成錯誤...
09/09 00:54, 19F

09/09 02:38, , 20F

09/09 09:21, , 21F
其實james732已經說出重點.可能要五六年後,家家戶戶都是
09/09 09:21, 21F

09/09 09:21, , 22F
64bit.才沒這問題吧
09/09 09:21, 22F
文章代碼(AID): #1EQEoD9h (C_and_CPP)