Повернення каретки Windows, \r\nпоки воно знаходиться \nв Unix, \r\nрозглядається як два символи?
Відповіді:
Це два символи:
\r є повернення каретки;\n - це лінійна подача.Два символи в поєднанні представляють новий рядок у Windows. Тоді як на Linux, \nпредставляє новий рядок. Він переміщує курсор на початок нового рядка в Linux. У Windows курсор залишатиметься в тому ж стовпці на консолі, але в наступному рядку.
\rна Linux має такий самий ефект, як на Windows: переміщує курсор на початок рядка. Можна надрукувати різну інформацію на одному рядку, де \rвикористовується замість \n.
Насправді \r is 0x0D (^M) and \n is 0x0A (^J), але ..... на вікнах:
\n will write 0x0D 0x0A
на unix:
\r will write 0x0D
\n will write 0x0A
stdoutз бінарним потоком, а не як текстовий потік, призведе до \nнаписання єдиного тексту, 0x0Aа не 0x0D 0x0Aв Windows. Див. Відповідь @FredFoo.
Залежить від обстановки. \r\nмає два байти в ширину (в ASCII, UTF-8 тощо), але бібліотеки вводу-виводу, такі як stdioбібліотека C та інші, при роботі в текстовому режимі можуть перекладати між \nі \r\nквазіпрозоро.
Тобто, на платформі Windows програма C, що читає потік текстового режиму за txt_inдопомогою
while ((c = getc(txt_in)) != EOF)
printf("%02x\n", c);
не повідомлятиме код ASCII для \r. І навпаки, putc('\n', txt_out)фактично буде писати \r\nв текстовому режимі txt_out.
Так, це два символи: повернення каретки '\ r' з подальшим подаванням рядка '\ n'.
Я провів кілька тестів (нічого фантазії) з Notepad ++ і Sublime Text 2 на Windows, і виявляється, що \rі \nсправді 2 різних символів, але ...
Різні текстові редактори можуть вставляти або не вставляти, \rколи натискається клавіша повернення .
Спробуйте наступне у своєму текстовому редакторі:
1
2
3
4
5
Потім натисніть Ctrl + F , увімкніть регулярні вирази та виконайте пошук \r. Залежно від вашого текстового редактора та його налаштувань, ви можете "вдарити" або "не вдарити" символ у кінці кожного рядка. Якщо наведений текст скопійовано з іншого редактора, поведінка також може відрізнятися ...
Деякі текстові редактори дозволяють налаштовувати у своїх налаштуваннях, де ви можете вказати, чи віддаватимете перевагу \r\nстилю Unix, \nколи ви натискаєте клавішу Return . Крім того, вони можуть дозволити вам застосувати послідовний стиль, зачистивши або вставивши \rсимвол перед збереженням файлу.