回复:读取一行并在 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
.
所以我浏览了一些相同的问题并找到了有效的答案。我只是想知道是否有人可以向我解释这个答案中代码的最后一行:
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
.