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中文网其他相关文章!