【问题标题】:Re: Reading a line and using realloc in C回复:读取一行并在 C 中使用 realloc
【发布时间】:2016-12-26 14:55:34
【问题描述】:

所以我浏览了一些相同的问题并找到了有效的答案。我只是想知道是否有人可以向我解释这个答案的最后一行代码:

Read text from a file and realloc when needed

fgets(linebuffer + (maxlinelen/2 - 1), maxlinelen/2 + 1, fp); //this line

非常感谢!

【问题讨论】:

  • 搜索“c指针算法”。
  • 顺便说一句,有更简单的方法来实现 read-and-realloc 循环,例如like this.

标签: c file fgets realloc


【解决方案1】:

当容量增加一倍时,linebuffer 的前半部分是满的,另一半是空的。因此,它从linebuffer 的中间开始写入数据。因此他不会覆盖linebuffer的前半部分

【讨论】:

    【解决方案2】:

    编写器正在尝试读入数组的后半部分。为了做到这一点,基地址必须更高。因此第一个参数linebuffer + (maxlinelen/2 - 1)。它获取数组的基地址,并将数组长度的一半添加到其中。

    但是由于数组的长度是原来的一半,因此写入者将数组的大小减半。因此,第二个参数,maxlinelen/2 + 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2011-05-04
      • 1970-01-01
      • 2016-03-02
      相关资源
      最近更新 更多