В C я обычно читаю текстовые файлы по одному символу за раз (например, в цикле FSM, разбивке токенов и разборе одновременно).К сожалению, некоторые операционные системы используют разные методы для обозначения конца строки, например Unix ("\n"
), Mac OS ("\r"
) и DOS / Windows ("\r\n"
).
Отсюда мой вопрос: как правильно определить окончание строк в текстовых файлах из разных операционных систем?
Мой текущий подход заключается в обработке '\r'
как '\n'
и игнорировании пустых строк.К сожалению, этот подход работает только до тех пор, пока пустые строки не изменяют семантику основного текста.
Я бы не хотел "определять" стиль окончания строки для каждого файла, и я, конечно, неНе нужны решения, основанные на #ifdef
или других видах условной компиляции.Остались ли действительные решения?