Порядок возврата каретки и новая линия подачи

Важно ли иметь правильный порядок возврата каретки, а затем новую линию? Для текстовых редакторов важно, в каком порядке они появляются?

Например, вместо

\r\n

это

\n\r

Похоже, что у Джеффа есть все, что было написано очень хорошо Сообщение в блоге.

5 ответов

Традиционный порядок, когда используются оба управляющих символа, - Возврат каретки, затем Линейный канал.

Причина этого восходит к старому телету ASR-33.

Когда возврат каретки выдается в ASR-33, печатающая головка, если она находится рядом с правым краем, занимает десятую часть секунды, чтобы вернуться к левому краю, плюс есть "отскок", при попадании левого поля.

Если заказ был "Подача линии", то "Возврат каретки", первый печатный символ может появиться через десятую часть секунды после возврата каретки и, таким образом, может закончиться печатью (как мазок) на полпути через страницу. Но если Line Feed приходит после возврата каретки, время, затрачиваемое линией подачи, обеспечивает дополнительное время, чтобы печатающая головка завершила его.

Некоторые системы (я думаю, что старая операционная система Xerox Sigma 7, например) делает Line Feed и Carriage Return, но они вводят, например, NULL символов в поток данных, чтобы позволить печатающей головке делать это.

И, конечно, когда вы добираетесь до более быстрых устройств (например, около 30 CPS-телепринтеров), проблема ухудшается, и требуется более сложная стратегия.

(Существует также точка, что для ввода пользователем возврат каретки предоставляется пользователем, нажимая клавишу "Возврат", а "Линейный канал" должен быть предоставлен компьютером. По этой причине часто был "стиль" имеют нормальные линии печати, начинаются с Line Feed и заканчиваются возвратом каретки. Затем запрос на ввод пользователя состоял только из линейного фида, а пользовательский ввод заканчивался возвратом каретки. Эта схема работала хорошо, когда она использовалась последовательно, но, конечно, это не всегда случалось.)


Существует три стандартных формата перевода строки:

  • \r\n для мира DOS\Windows
  • \r для пре-OSX Mac мира
  • \n для Unix и Unix-подобного мира

\n\r не является стандартом нигде, о котором я знаю, и, скорее всего, это приведет к тому, что ваш редактор подумает, что он имеет текстовый файл в формате Unix, а затем отобразит странный символ в качестве текста.

Исторически,\r преобразуется в возврат каретки (CR, ASCII-код 13), который относится к старой машинке-пишущей машинке, где вы нажимаете каретку назад влево, чтобы вернуть курсор обратно в начало строки. \n переводится в линейный канал (LF, ASCII-код 10), который перемещает символ вниз по одному символу страницы. Хотя потенциально интересно, это вообще не имеет значения. просто используйте соответствующий формат перевода строки для текущей платформы.


В качестве всего лишь слежения за возвратом каретки, а затем в исследовательский банк Line Feed.

С NotePad он обнаруживает, когда конец строки, когда он находит символ CR + LF. Это общий формат, используемый CP/M, MS-DOS и Win32, Источник

Unix обнаруживает конец строки, когда находит LF. Apple обнаруживает конец строки, когда находит CR.

С точки зрения Uni-Code существует управляющий символ NEXT LINE (NEL), чтобы сделать ситуация еще сложнее.

С языком программирования C, почему он выписывает возврат каретки + линию, когда вы даете ему символ линии? например, printf ( "hello World \n" ).

C и язык переопределенной строки операционной системы Unix в качестве символа новой строки с намерением, чтобы библиотека stdio преобразует символ символ новой строки во все, что требуется, чтобы перейти к началу следующей строки для этой платформы, например, возврат каретки + линия для Win32.

Итак, когда вы пишете новый символ строки (это действительно символ LF) в C/С++ и на Windows или Linux, студийная библиотека будет определять формат вывода, который должен быть выведен для этого конца строки для этого платформы.

Это очевидно при создании двоичного файла или текстового файла в программе на языке C. Если вы укажете, что вы пишете двоичный файл, библиотека студии оставит выходной формат без изменений для этой платформы. Поэтому, когда вы записываете данные в файл и набираете символ новой строки, он не будет вставлять зависимые от платформы символы для новой строки.

Несмотря на то, что он пришел к заключению после всего этого.

Даже если вы следуете правилам Win32 для Return Car Line Return + Line Feed, например, записывая в файл как чистый двоичный файл.

MyText \n MyText \n MyText

И вы предполагаете, что это будет выглядеть так, как в вашем текстовом редакторе.

MyText     MyText           MyText

Большинство редакторов вместо этого будут выглядеть так.

MyText
MyText
MyText

Путаница в основном связана с стандартом C, который использует \n новый символ линии для двух разных значений. Во-первых, в качестве нового индикатора строки для библиотеки STIO для преобразования в новую линейную систему операционной системы (CR + LF на win32, LF на Linux и CR для Apple). Во-вторых, как только строка с шестнадцатеричным значением.

Хорошо после 10 ревизий и опробования разных подходов к Win3.1,95,98, XP Я пришел к выводу, что не смог найти приложение, которое использовало CR и LF самостоятельно и может использовать их комбинацию в тот же документ. Большинство текстовых редакторов будут показывать квадрат, когда он попадает в один CR или LF. Наиболее умные текстовые редакторы изменят формат файла в зависимости от того, найдут ли CR + LF/LF/CR для соответствующей платформы.

Большинство, если не все редакторы, беспокоятся только о том, чтобы создать новую строку для пользователя и переключаться между различными форматами файлов. Итак, если ваш писатель лексер и строковый токенизатор в ближайшее время и беспокоится о том, когда нужно обнаружить новую строку. Лучше всего для более низких уровней определить формат файла (CR + LF Win32, LF Linux, CR Apple), чтобы увеличить номер строки. Или используйте функцию ReadLine, которая учитывает это.

Непонятно, что почему Carriage Return + Line Feed был принят IBM и Win32 в качестве стандарта для инструктирования текстового редактора для создания новой строки. Когда на самом деле его избыточность. Я не смог найти ни одно приложение, которое отображало или использовало Return Car Line Return Line Line независимо от фактического имени, которое оно предлагает.

Итак, если ваш студент университета пишет новый текстовый редактор, чтобы удивить мир. Автоматически определять формат файла и не беспокоиться о фактическом техническом значении, данном CR + LF.


(Извините за удар, но это основной результат для результатов поиска по этой проблеме)

В Notepad ++ это имеет значение. Когда вы начинаете с linefeed \n, а затем возвращаете карету \r, ваш перевод строки закончится на следующей строке. Таким образом, порядок должен быть: CR LF


Существует множество конвертеров новой строки.

например. этот. Они выполняют большую часть работы для вас.

licensed under cc by-sa 3.0 with attribution.