Есть несколько способов добиться этого:
Первый путь (В этом случае позиция будет автоматически обновляться до того, сколько вы прочитали.)
- Считывание всего содержимого журнала в память
- Сортировка по возрастанию (смещение + длина)
- Использование последовательных вызовов чтения
Второй способ (наиболее переносимый)
- Использование fgetpos (), fgetpos64 () и fsetpos (), fsetpos64 () набор функций.
Третий путь
- Использование ftello (), fseeko () и ftello64 (), fseeko64 () набор функций.
Четвертый путь (менее переносимый)
- Использование ftell (), fseek () и ftell64 (), fseek64 () набор функций.
Разница между func () и func64 () в том, что func64 () использует правильное 64-битное смещение, чтоустраняет проблему с файлами более 4 Гб, в то время как func () использует тип int , который может быть 32 или 64 бит, в зависимости от архитектуры.
fseeko () и ftello () функции идентичны fseek () и ftell () за исключением того, что смещает аргумент fseeko () иВозвращаемое значение ftello () имеет тип off _t вместо long .
В качестве заключения рекомендуется использовать fgetpos64 () / fsetpos64 () илиftello64 () / fseeko64 ().Насколько это возможно, старайтесь избегать использования ftell () и fseek ().