Я столкнулся с необходимостью быстрого доступа к выбранным данным в гигабайтах. Как только я найду начальную точку, последующий доступ будет последовательным. Файлы содержат дату в начале каждой записи, и дата увеличивается по всему файлу. Я не хочу начинать с начала и читать файл, игнорируя все, что находится впереди. Меня интересуют ТОЛЬКО приложения WINDOWS. Я хотел бы открыть файл в текстовом режиме.
Мне приходит в голову, что я мог бы выполнить какой-то двоичный поиск, используя 64-битные функции fseek / ftell или fsetpos / fgetpos. Я понимаю, что мог бы искать середину записи с разделителями новой строки, но можно было бы подумать, что вы можете просто пропустить любую частичную запись с помощью вызова fgets.
fseek предлагает механизм SEEK_END источника, поэтому, похоже, его можно использовать с ftell для определения размера файла. Я не вижу аналогичного объекта с fsetpos / fgetpos. Как получить размер файла, если вы используете fsetpos / fgetpos?
_fseeki64 / _ftelli64 использует int64, а fpos_t, используемый fsetpos / fgetpos, также имеет тип int64, поэтому я должен иметь возможность выполнять арифметику с указателями.
Или я здесь не на том пути? Должен ли я рассмотреть какой-то другой подход?