Если вы используете платформу, которая поддерживает ее, вы можете использовать mmap ().
Пагинация файла также возможна, но не забудьте сохранить буфер настолько большим, насколько это возможно, чтобы уменьшить накладные расходы ввода-вывода и соблюдать осторожность между границами двух страниц (предположим, что строка совпадает, но разделяется по границе страницы) 1001 *
В качестве альтернативы я предлагаю вам создать какой-нибудь индекс и использовать индекс для ограничения поиска. KMP поиск не особенно эффективен. Это, конечно, зависит от характера вашего файла, способа его создания, и т. Д.