gpt4 book ai didi

c - ftell 返回不正确的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:47 24 4
gpt4 key购买 nike

我遇到了一个问题,ftell 返回的值不正确。我的代码在 linux 上的 netbeans 中运行时报告正确,但完全相同的代码在 windows 上的 netbeans 中运行时(使用 mingw)报告不正确。文件指针指向在 BINARY_READ 中打开的文件。在我的 linux netbeans 中,运行我的子程序后,ftell 报告 35。在我的 windows netbeans 中,调用相同的子程序后,ftell 是 3621。我跟踪了我的子程序,以下语句似乎导致了问题:

if (((header_size = getc (fp)) == EOF) || (header_size == 0))

在我的 linux netbeans 上,此语句后的 ftell(fp) 结果为 1。但是在我的 windows netbeans 上,这条语句之后的 ftell(fp) 是 3585。

可能导致问题的原因是什么?

最佳答案

您需要以二进制模式打开文件:

fp = fopen(name, "rb");

或类似的。您应该养成始终这样做的习惯,因为在标准 C 中只有二进制模式具有明确定义的行为。在 POSIX 系统上,二进制和文本(默认)模式的行为相同,但在 Windows 上,换行符的修改发生在弄乱文件内容和偏移量的方式。

关于c - ftell 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com