Вы можете найти место, где заканчивается последняя строка, прочитать последнюю строку в памяти, найти место назад, написать новую строку, а затем последнюю строку.
Чтобы найти место: ищите до конца, минус размер буфера. Читай буфер, ищи
новая линия. Если не найден, ищите назад два размера буфера и попробуйте снова.
Вам нужно будет использовать режим r + для fopen
.
О, и вам нужно быть осторожным с текстовым и двоичным режимами. Вам необходимо использовать двоичный режим, поскольку в текстовом режиме вы не можете вычислить позиции прыжка, вы можете переходить только в те места, которые вы получили из ftell
. Вы можете обойти это, прочитав весь файл и вызвав ftell
в начале каждой строки. Для больших файлов это будет медленно.