Яке значення мають наступні контрольні символи:
Повернення вагона
Лінійний канал
Форма подачі
Яке значення мають наступні контрольні символи:
Повернення вагона
Лінійний канал
Форма подачі
Відповіді:
Повернення каретки означає повернутися до початку поточної лінії без просування вниз. Назва походить від каретки принтера, оскільки монітори були рідкістю, коли ім'я було придумано. Зазвичай це уникає як \r
, скорочено CR , і має значення ASCII 13
або 0x0D
.
Linefeed означає просування вниз до наступного рядка; проте він був перероблений та перейменований. Використовується як "новий рядок", він закінчує лінії (зазвичай їх плутають з роздільними лініями). Це зазвичай уникає як \n
, скорочено LF або NL, і має значення ASCII 10
або 0x0A
. Для пари використовується CRLF (але не CRNL) \r\n
.
Подача форми означає перехід до наступної "сторінки". Він зазвичай використовувався як роздільники сторінок, але зараз також використовується як роздільник розділів. (Нечасто використовується у вихідному коді для поділу логічно незалежних функцій або груп функцій.) Текстові редактори можуть використовувати цей символ, коли ви "вставляєте розрив сторінки". Зазвичай це уникає як \f
, скорочено FF , і має значення ASCII 12
або 0x0C
.
Як контрольні символи їх можна інтерпретувати по-різному.
Найпоширеніша відмінність (і, мабуть, єдина, про яку варто турбуватися) - це рядки, що закінчуються на CRLF у Windows, NL на Unix-подібних і CR на старих Macs (ситуація змінилася з OS X, щоб бути схожою на Unix). Зауважимо, що зміст значення від LF до NL для точно такого ж символу дає відмінності між Windows та Unix. (Windows, звичайно, новіше, ніж Unix, тому він не сприйняв цей смисловий зсув. Я не знаю історії Macs за допомогою CR.) Багато текстових редакторів можуть читати файли в будь-якому з цих трьох форматів і конвертувати між ними , але не всі комунальні послуги можуть.
Подача форми трохи цікавіша (хоча і менш часто використовується безпосередньо), і при звичайному визначенні роздільника сторінок вона може надходити лише між рядками (наприклад, після послідовності нового рядка NL, CRLF або CR) або на початку або кінець файлу.
\x0c
?
\r
це повернення каретки і переміщує курсор назад, як якщо б я це зробив-
printf("stackoverflow\rnine")
ninekoverflow
означає, що він перемістив курсор на початок "stackoverflow" і перезаписав початкові чотири символи, оскільки "дев'ять" має чотири символи.
\n
- це новий рядовий символ, який змінює рядок і переводить курсор на початок нового рядка, наприклад-
printf("stackoverflow\nnine")
stackoverflow
nine
\f
це корм форми, його використання стало застарілим, але воно використовується для надання подібних відступів
printf("stackoverflow\fnine")
stackoverflow
nine
якщо я напишу як-
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
printf
утиліту coreutils. Або навіть з використанням echo -en
якого є вбудований баш.
\f
насправді \v
- вертикальна вкладка, надана обом на консолі однаково.
printf("123\f456\f789");
показує /> <bold> 123456789 </bold> на консолі.
Погляньте на Вікіпедію :
Системи, засновані на ASCII або сумісному наборі символів, використовують або LF (канальний рядок, '\ n', 0x0A, 10 у десятковій частині), або CR (повернення каретки, '\ r', 0x0D, 13 у десятковій частині) окремо, або CR з наступним LF (CR + LF, 0x0D 0x0A). Ці символи ґрунтуються на командах принтера: Подача рядків вказувала, що один лист паперу повинен надходити з принтера, а повернення каретки вказувало, що каретка принтера повинна повернутися до початку поточного рядка.
\f
використовується для розриву сторінки. Ви не бачите жодного ефекту в консолі. Але коли ви використовуєте цю константу символів у вашому файлі, ви можете побачити різницю.
Інший приклад - якщо ви можете перенаправити результат на файл, тоді вам не доведеться писати файл або використовувати обробку файлів.
Наприклад:
Напишіть цей код в c ++
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
і коли ви компілюєте це, він генерує exe (наприклад, abc.exe
)
тоді ви можете перенаправити свій вихід на файл, використовуючи це:
abc > xyz.doc
тоді відкрийте файл, xyz.doc
ви побачите фактичну перерву сторінки між hellooo та hiiii ....
Крім вищенаведеної інформації, є ще цікава історія LF (\ n) та CR (\ r). [Оригінальний автор: 阮一峰 Джерело: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Перш ніж вийшов комп'ютер, був тип телепринтеру під назвою Teletype Model 33. Він може друкувати 10 символів кожен другий. Але в цьому є одна проблема, після закінчення друку кожного рядка знадобиться 0,2 секунди для переходу до наступного рядка, це час друку 2 символів. Якщо протягом 0,2 секунди буде передано новий символ, то цей новий символ буде втрачено.
Отже, вчені знайшли спосіб вирішити цю проблему, вони додають два символи, що закінчуються після кожного рядка, один - «Повернення каретки», що означає, щоб принтер привів друкуючу голівку ліворуч; інший - "Подача рядків", він повідомляє принтеру перемістити папір на 1 рядок.
Пізніше комп'ютер став популярним, ці два поняття використовуються на комп’ютерах. У той час запам'ятовуючий пристрій був дуже дорогим, тому деякі вчені сказали, що додати два символи в кінці кожного рядка досить дорого, одного достатньо, тому є деякі аргументи, яким саме користуватися.
У UNIX / Mac та Linux '\ n' ставиться в кінці кожного рядка, у Windows, '\ r \ n' ставиться в кінці кожного рядка. Наслідком цього використання є те, що файли в UNIX / Mac будуть відображатися в одному рядку, якщо їх відкрити в Windows. Хоча файл у Windows матиме один ^ M в кінці кожного рядка, якщо він відкриється в UNIX або Mac.
WRITE.EXE
(він же Wordpad) може відображати їх просто чудово.
На старих терміналах принтера для паперу перехід до наступного рядка передбачав дві дії: переміщення друкуючої головки назад до початку горизонтального діапазону сканування (повернення каретки) та переміщення рулону паперу, на який друкується (подача рядка).
Оскільки ми більше не використовуємо термінали паперового принтера, ці дії вже не є актуальними, але символи, які використовуються для їх сигналу, застрягли в різних втіленнях.
Розглянемо ударний принтер IBM 1403. CR перемістила друкувальну головку до початку рядка, але НЕ пересунула папір. Це дозволило "перевидрукувати", розмістивши кілька рядків виводу на одному рядку. Такі речі, як підкреслення, були досягнуті таким чином, як і СУЖИЙ друк. LF просунув папір на один рядок. Якщо CR не було, наступний рядок надрукував би як поетапний крок, оскільки LF не перемістила головку друку. FF перемістив папір на наступну сторінку. Зазвичай він також переміщав друкуючу головку до початку першого рядка на новій сторінці, але для цього вам може знадобитися CR. Зрозуміло, більшість програмістів кодують CRFF замість CRLF в кінці останнього рядка сторінки, оскільки додатковий CR, створений FF, не має значення.
Коротко :
Carriage_return ( \r
або 0xD
): взяти контроль над початком тієї ж лінії .
Line_Feed ( \n
або 0xA
): Для того, щоб взяти під контроль при запуску з наступного рядка .
form_feed ( \f
або 0xC
): Для того, щоб взяти під контроль при запуску з наступної сторінки .
Як доповнення,
1, Повернення каретки : це термінологія принтера, що означає зміну місця друку на початок поточного рядка. У комп'ютерному світі це означає повернення до початку поточного рядка в більшості випадків, але нове значення має рідкість.
2, Потік рядків : це термінологія принтера, що означає просування паперу на один рядок. Таким чином, повернення каретки та канал каналів використовуються разом, щоб почати друкувати на початку нового рядка. У комп'ютерному світі він, як правило, має те саме значення, що й новий рядок.
3, Feed форми : Це термінологія принтера, мені подобається пояснення в цій темі .
Якщо ви програмували принтер у 1980-х роках, він видалить папір та запустить нову сторінку. Ви практично впевнені, що ніколи цього не потребуєте.
Він майже застарілий, і ви можете звернутися до послідовності Escape \ f - feed feed - що це саме? для детального пояснення.
Зауважте, що ми можемо використовувати CR або LF або CRLF, щоб відстояти новий рядок на деяких платформах, але новий рядок не може стояти за ними на деяких інших платформах. Для детальної інформації зверніться до вікі Newline .
LF: Multics, Unix та Unix-подібні системи (Linux, OS X, FreeBSD, AIX, Xenix тощо), BeOS, Amiga, RISC OS та інші
CR: 8-бітні машини Commodore, Acorn BBC, ZX Spectrum, TRS-80, сімейство Apple II, Oberon, класичний Mac OS до версії 9, MIT Lisp Machine та OS-9
RS: реалізація QNX до POSIX
0x9B: 8-бітні машини Atari, що використовують варіант ATASCII ASCII (155 у десятковій частині)
CR + LF: Microsoft Windows, DOS (MS-DOS, ПК DOS тощо), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC та більшість інших ранніх не-Unix та не-IBM OS
LF + CR: текст Acorn BBC та RISC OS намотують текст.
Повернення каретки та подача рядків - це також посилання на друкарські машинки, оскільки з невеликим натисканням на ручку з лівої сторони коляски (місце, куди йде папір) папір обертається невеликою кількістю навколо циліндра, просуваючи документуйте один рядок. Якщо ви закінчили вводити один рядок і хочете продовжувати рух до наступного, ви натискали сильніше, як просуваючи лінію, так і ковзаючи вагонкою вправо, а потім продовжували вводити ліворуч праворуч, коли вагон рухався кожним натисканням клавіші . Потрібно говорити, що обробка тексту за словом була типовою настройкою для всієї обробки текстів епохи. П: Д
Це недрукарські символи, що стосуються поняття "новий рядок". \ n - це прямий канал. \ r - повернення вагона. На різних платформах вони мають різний зміст відносно дійсного нового рядка. У Windows новий рядок - \ r \ n. У Linux, \ n У mac, \ r.
На практиці ви вводите їх у будь-який рядок, і це матиме вплив на друк рядка.