回复:读取一行并在 C 中使用 realloc

Re: Reading a line and using realloc in C

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

Read text from a file and realloc when needed

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

非常感谢!

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

的前半部分

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

但由于数组只有一半长,作者将数组的大小减半。因此第二个参数,maxlinelen/2 + 1.