tellg() 誤解:報告檔案大小
在您的程式碼片段中,您遇到了tellg() 函數傳回值的問題大於read() 函數讀取的檔案的實際大小。這種知覺差異源自於對tellg() 目的的誤解。
Tellg 的函數
與普遍看法相反,tellg() 不提供檔案或從開頭的偏移量(以位元組為單位)。相反,它會傳回一個標記值,一個佔位符,稍後可以使用該佔位符返回到檔案中的相同位置。傳回的實際數字可能因作業系統和檔案模式而異。
實際實作
實際上,在Unix 系統上,tellg() 會傳回以位元組為單位的偏移量,而在Windows 上,它只會傳回以二進位模式開啟的檔案的偏移量。對於 Windows 上的文字模式,傳回的值可能無法準確反映到達該位置所需的位元組數。
準確的位元組計數
準確地確定需要的位元組數對於可讀取的位元組,唯一可靠的方法是執行讀取操作。這可以使用以下技術來實現:
其他觀察
除了tellg()問題之外,您的程式碼還包含其他錯誤:
透過解決這些問題,您的程式碼可以準確地確定檔案的大小並執行讀取操作正如預期的那樣。
以上是為什麼 `tellg()` 不能準確地報告 C 中的檔案大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!