В C / POSIX вы должны иметь возможность использовать fseek
с опцией SEEK_END
для небольшого резервного копирования с конца файла (скажем, 512 байт), а затем read
этих 512 байт в память.
Исходя из этого, вы можете точно определить, где начинается вторая последняя строка, а затем использовать truncate
или ftruncate
для фактического усечения файла в этой точке.
Если последние двастроки больше 512 байт (т. е. начало второй последней строки не отображается в прочитанном вами фрагменте), просто увеличьте значение до 1024 и повторите попытку.Продолжайте, пока не найдете его.