gpt4 book ai didi

C 文件读取不正确的字符数

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:21 25 4
gpt4 key购买 nike

我偶然发现了一个问题,我试图读取一个文件,根据 Windows,大小为“87.1 kb”,并在程序中使用 ftell 方法,返回“89282”,有效地确认了哪些窗口正在说。

那么为什么从文件中读取字符的每种方法都只返回 173 或 174 个字符?

该文件是一个重命名为 .txt 的 .GIF 文件(我正在尝试构建一个可以完全加载数据的程序,因为我正在开发一个程序来下载在线图像并需要对它们进行比较)。

到目前为止我已经尝试过:

  • fgetc - 这将返回 173/174 个字符。
  • fread - 与上面相同,这是一个包含 1024 个或更多可用空格的字符串。
  • fgets - 不起作用(因为它不返回已读取的字符数 - 包括空值的字符)。
  • setvbuf - 使用 _IONBF 禁用它,或者甚至提供 1024 或更多的缓冲区仅意味着仍然返回 173/174。
  • fflush - 这产生了一个“结果”,尽管是一个负数 - 它返回了“2”个字符而不是“173”个字符。

我完全不明白为什么它没有读取超过 173/174 个字符的内容。是否有我需要在较低级别补偿或期望的东西?我需要扩展一些缓冲区或需要注意一些奇怪的字符?

最佳答案

这里有一件事情要看。在十六进制查看器中查看文件,看看在 173/174 偏移量附近是否有 CTRL-Z。

然后检查您是否使用 "r" 模式打开它。

如果是这样,可能是因为 CTRL-Z 是文本模式下的 EOF 标记,所以 Windows 在文本和二进制文件之间的转换会阻止您在那里阅读。如果是这样,您可以在 fopen 上使用 "rb" 模式来解决这个问题。

否则,您需要发布展示问题行为的最小代码段。这对我们这里的一些人来说可能是显而易见的,但通常只有在我们可以看到代码的情况下才会这样:-)

关于C 文件读取不正确的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7227480/

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