C: проблемы при разборе файла в виде потока строк
Довольно часто я использую fgets() в цикле для перебора строк файла и их обработки. Обычно это работает хорошо, но в некоторых случаях это отстой.
Пример 1: Если вам нужно знать информацию о следующей строке(строках) или предыдущей строке(строках), чтобы решить, как обрабатывать текущую строку.
Пример 2: текущая строка указывает на то, что вы прочитали слишком далеко, и вы должны отправить ее в другой контекст вашего синтаксического анализатора.
Я знаю много обходных путей, но в целом они, как правило, являются несостоятельными хаками.
Я мог бы прочитать весь файл в виде массива строк, а затем проползти через него с относительной легкостью.
Я думаю, что это лучшее решение, но оно имеет серьезный недостаток: потребление памяти, эквивалентное размеру файла. Насколько я знаю, fopen() и fgets() этого не делают.
Что вы думаете о наилучшем компромиссе? Создать файловый интерфейс ввода-вывода с небольшим кэшем?
Спасибо
Что я уже пробовал:
Хранение двух или трех строк одновременно и использование ссылок для их обработки в виде набора
Использование функции un-gets-line для выталкивания строк обратно в стек, если они были прочитаны и должны быть непрочитаны, рисование новых строк из стека до тех пор, пока он не закончится, а затем извлечение новых.