tellg() 函數與檔案大小調整
tellg() 是C 語言中的函數,用於擷取檔案中的當前位置。但是,請務必注意,tellg() 不提供檔案的實際大小(以位元組為單位)。相反,它會傳回一個標記值,稍後可以使用該值來返回相同位置。
在提供的程式碼中,似乎對tellg() 的預期行為有誤解。程式碼使用tellg() 來確定檔案的大小,然後用於分配緩衝區來保存檔案內容。但是,不應依賴tellg() 來實現此目的。
根據 C 語言規範,tellg() 傳回特定於實作的標記值。雖然它通常對應於 Unix 系統中的位元組偏移量,但在 Windows 下不能保證這種行為。在文字模式下,Windows 可能會傳回大於到達目前位置所需的實際位元組數的值。
要準確地確定檔案的大小,建議使用替代方法,例如:
#include <limits> ... file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); // Retrieve the size of the file in bytes file.clear(); // Reset the file stream file.seekg(0, std::ios_base::beg); // Return to the beginning of the file
此外,提供的程式碼中存在幾個問題:
以上是如何在 C 中準確地確定檔案的大小而不是使用 `tellg()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!