Если ваш собственный код проверяет один символ за раз, вы хотите использовать sentinel , чтобы отметить конец буфера или конец файла, чтобы у вас был только один тест в вашем внутреннем цикле . В вашем случае это один тест для конца строки, поэтому вы захотите временно вставить новую строку в конце каждого буфера, например.
Статья в Википедии о стражах вообще не помогает; это не описывает этот случай. Вы можете найти описание в любом из учебников алгоритмов Роберта Седжвика.
Возможно, вы также захотите взглянуть на re2c
, который может генерировать очень быстрый код для сканирования текстовых данных. Он генерирует код на C, но вы можете его адаптировать, и вы, безусловно, можете изучить методы, прочитав их статью о re2c
.