8 ответов:
С точки зрения кода ascii, это 3 - так как они 10 и 13 соответственно;-).
а если серьезно, то есть много:
- в Unix и Unix-подобных систем,
\n- Это код конца строки,\rничего особенного- как следствие, в C и большинстве языков, которые каким-то образом копируют его (даже удаленно),
\nявляется стандартной escape-последовательностью для конца строки (переводится в / из ОС-конкретных последовательностей по мере необходимости)- in старые системы Mac (pre-OS X),
\rкод для конца строки вместо- в Windows (и многих старых ОС), код для конца строки составляет 2 символа,
\r\nв следующем порядке- как (удивительно;-) следствие (возвращаясь к OSs намного старше Windows),
\r\nявляется стандартным завершением строки для текстовых форматов в Интернете- для электромеханических телетайпных "клемм",
\rкоманда каретке вернуться влево, пока она не ударит крайняя левая остановка (медленная операция),\nкомандует роликом свернуть одну линию (гораздо более быстрая операция) - вот почему у вас всегда есть\rдо\n, Так, что ролик сможет двинуть пока экипаж все еще идет налево!- ) Википедия имеет более подробное объяснение.- для клемм символьного режима (обычно эмулирующих еще более старые печатные устройства, как указано выше), в режиме raw,
\rи\nдействовать аналогично (за исключением обоих термины курсора, как там и отсутствие экипажа или ролика; -)на практике, в современном контексте записи в текстовый файл, вы всегда должны использовать
\n(базовая среда выполнения переведет это, если вы находитесь на странной ОС, например, Windows;-). Единственная причина использовать\rЕсли вы пишете в символьный терминал (или, скорее, в "окно консоли", эмулирующее его) и хотите, чтобы следующая строка, которую вы пишете, перезаписывала последнюю, которую вы только что написали (Иногда используется для глупых эффектов" ascii animation", например, прогресс-баров)-это становится довольно устаревшим в мире графических интерфейсов, хотя; -).
исторически a
\nиспользуется для перемещения каретки вниз, в то время как\rиспользуется для перемещения каретки обратно в левую часть страницы.
два разных персонажа.
\nиспользуется в качестве конца строки Терминатора в текстовых файлах Unix
\rиспользуется в качестве конца строки Терминатора в текстовых файлах Mac
\r\n(т. е. оба) используются для завершения строк в текстовых файлах Windows и DOS.
поскольку никто больше не упоминал об этом конкретно (они слишком молоды, чтобы знать/помнить?)- Я подозреваю использование
\r\nвозникла для пишущих машинок и аналогичные устройства.когда вы хотели новую строку при использовании многострочной пишущей машинки, было два физических действия, которые она должна была выполнить: сдвиньте каретку назад к началу (слева, в США) страницы и подайте бумагу на одну отметку.
еще во времена линейных принтеров единственный способ сделать жирный текст, для например, нужно было сделать возврат каретки без новой строки и напечатать те же символы поверх старых, тем самым добавив больше чернил, тем самым сделав его более темным (полужирным). Когда механическая функция "новой строки" не удалась в пишущей машинке, это был раздражающий результат: вы могли ввести предыдущую строку текста, если вы не обращали внимания.
два разных символа для разных операционных систем. также это играет роль в данных, передаваемых по
TCP/IPчто требует использования\r\n.
\nUnix
\rMac
\r\nWindows и DOS.
завершить
в сценарии оболочки (bash) вы можете использовать
\rчтобы отправить курсор, спереди на линии и, конечно\nпоставить курсор на новую строку.например, попробовать :
echo -en "AA--AA" ; echo -en "BB" ; echo -en "\rBB"
- первый дисплей "Эхо"
AA--AA- второй :
AA--AABB- из последнего :
BB--AABBно не забудьте использовать
-enкак параметры.
в windows \n перемещается в начало следующей строки. \R перемещается в начало текущей строки, не переходя к следующей строке. Я использовал \r в своих консольных приложениях, где я тестирую некоторый код, и я не хочу видеть текст, прокручивающий мой экран, поэтому вместо того, чтобы использовать \n после печати некоторого текста, скажем, частоты кадров (FPS), я буду печатать ("%- 10d\r", fps); это вернет курсор в начало строки, не переходя к следующей строке, и позволит мне чтобы иметь другую информацию на экране, которая не прокручивается, в то время как частота кадров постоянно обновляется на одной и той же строке (%-10 гарантирует, что выход составляет не менее 10 символов, выравнивается по левому краю, поэтому он заканчивается пробелами, перезаписывая любые старые значения для этой строки). Это довольно удобно для таких вещей, как правило, когда у меня есть отладочный вывод на экран консоли.
немного истории
В /Р расшифровывается как "возвращение" или "возврат каретки" который обязан своей историей пишущей машинке. Возврат каретки переместил вашу карету полностью вправо, чтобы вы печатали в начале строки.
/n означает "новая строка", опять же, от дней пишущей машинки вы перешли к новой строке. Не обязательно к началу этого, хотя, именно поэтому некоторые ОС приняли необходимость как A /r return, так и A / n newline, поскольку это был порядок, в котором это делала пишущая машинка. Это также объясняет старые 8-битные компьютеры, которые раньше имели "Return "вместо" Enter", от" carriage return", который был знаком.
#include <stdio.h> void main() { int countch=0; int countwd=1; printf("Enter your sentence in lowercase: "); char ch='a'; while(ch!='\r') { ch=getche(); if(ch==' ') countwd++; else countch++; } printf("\n Words = ",countwd); printf("Characters = ",countch-1); getch(); }давайте возьмем этот пример попробуйте поставить \n вместо \r он не будет работать и попытаться угадать, почему?
Comments