Окончания строки Windows состоят из двух отдельных символов, после которых следует символ возврата каретки ('\r'
), за которым следует новая строка ('\n'
). Поскольку они представляют собой комбинацию из двух символов, вы не можете обнаружить их, просматривая только один символ за раз.
Если ваш код работает в Windows, и файл должен интерпретироваться как текст, откройте его в текстовом режиме (например, "r"
вместо "rb"
) и строку терминаторы должны автоматически переводиться на отдельные символы новой строки. Если вы работаете в системе, которая использует одиночные символы новой строки в качестве разделителей строк (в большинстве случаев это , но Windows в наши дни), то такой перевод не будет выполнен. В этом случае, чтобы обнаружить терминаторы строки в стиле Windows, вам необходимо отслеживать, был ли непосредственно предыдущий символ '\r'
. Когда это так, и следующий прочитанный символ - '\n'
, тогда вы обнаружили терминатор строки.
Но если считается, что терминаторы в стиле Windows должны быть ошибочными в файле, вместо этого попробуйте просто исправить файл с помощью dos2unix
или аналогичной утилиты.