Вы можете найти место, где заканчивается последняя строка, читать последнюю строку в памяти, искать обратно в место, писать новую строку, а затем последнюю строку.
Чтобы найти место: Искать до конца, минус размер буфера. Читайте буфер, ищите newline. Если не найдена, найдите назад два размера буфера и повторите попытку.
Вам необходимо использовать режим r + для fopen
.
О, и вам нужно быть осторожным в текстовом и двоичном режимах. Вам нужно использовать двоичный режим, так как в текстовом режиме вы не можете вычислять позиции перехода, вы можете только перейти к местоположению, которое вы получили от ftell
. Вы можете обойти это, прочитав весь файл и позвонив ftell
в начале каждой строки. Для больших файлов это будет медленным.
Текст вопроса вводит в заблуждение: «append» всегда подразумевает «в конце», но то, что вы хотите сделать, - «вставить». –
было предложено несколько решений, все они оказались запросом «gimme da code». Если это домашнее задание, оно должно быть помечено так. – lorenzog