首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果新的行字符'0A‘是文件的一部分,如何读取完整的文件。

如果新的行字符'0A‘是文件的一部分,如何读取完整的文件。
EN

Stack Overflow用户
提问于 2018-09-27 08:06:19
回答 1查看 122关注 0票数 0

我有一个文件没有任何新的行字符。它是一个连续的字节流文件。假设整个文件的大小是100 is。如果nth Kb有'0A',那么读取的文件就会终止(尽管我给出了n+10字节,它还是以第n个字节结束),尽管它不是实际的新行字符。我想全面阅读100 in。怎么做?

我正在使用fget来读取文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 08:13:55

显示你的密码。

您不能使用字符串函数读取二进制数据,当然,它们的反应会像输入是字符串一样。

当然,在分配缓冲区之后,请使用fread()

典型的尝试可能是这样的:

代码语言:javascript
复制
void * load_file(const char *filename, size_t *length)
{
  FILE * const f = fopen(filename, "rb");
  if (f == NULL)
    return NULL;
  void *buf = NULL;
  if (fseek(f, 0, SEEK_END) == 0)
  {
    const long size = ftell(f);
    if (fseek(f, 0, SEEK_SET) == 0)
    {
      if ((buf = malloc(size)) != NULL)
      {
        const size_t got = fread(buf, size, 1, f);
        if (got < size)
        {
          free(buf);
          buf = NULL;
        }
        else if (length != NULL)
          *length = size;
      }
    }
  }
  fclose(f);
  return buf;
}

上面的内容没有经过测试,但应该作为一个不错的大纲。

当然,调用方必须在完成缓冲区后对其进行free()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52532281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档