标签: c file fgets realloc
所以我浏览了一些相同的问题并找到了合适的答案。我只是想知道是否有人可以向我解释这个答案的最后一行代码:
Read text from a file and realloc when needed
fgets(linebuffer + (maxlinelen/2 - 1), maxlinelen/2 + 1, fp); //this line
非常感谢!
答案 0 :(得分:2)
作者试图读入数组的后半部分。为此,基址必须更高。因此第一个参数linebuffer + (maxlinelen/2 - 1)。它取数组的基址,并将数组长度的一半加到它上面。
linebuffer + (maxlinelen/2 - 1)
但由于数组的长度只有一半,因此写入器的大小减半。因此,第二个参数maxlinelen/2 + 1。
maxlinelen/2 + 1
答案 1 :(得分:0)
当容量加倍时linebuffer的前半部分为填充,另一半为空。因此,它正在从linebuffer的中间开始写入数据。因此,他不会覆盖linebuffer
linebuffer