Nový řádek

Nový řádek (zkratka EOL, anglicky End Of Line) označuje v informatice speciální znak nebo sekvenci znaků, která v počítačovém souboru označuje konec řádku, odřádkování, přičemž další řádek začíná opět u kraje stránky. V programování se tento termín využívá v situaci, kdy konkrétní výsledek operace je závislý na použitém operačním systému nebo nastaveném režimu práce se souborem.

Historie

Znaky CR (Carriage Return, ASCII kód 0x0D) a LF (Line Feed, ASCII kód 0x0A) pocházejí ještě z období dálnopisné komunikace. Znak LF byl interpretován jako posun papíru o řádek vzhůru a znak CR jako návrat vozíku s papírem nebo tiskovou hlavou. Znaky byly interpretované elektromechanicky a proto bylo výhodné mít pro každou relativně samostatnou činnost jeden speciální znak. Kód CR se vždy posílal jako první, aby se tiskový vozík stihl vrátit, než se začne tisknout nový řádek. Někdy bylo dokonce nutné posílat CR+LF+NUL (poslední znak nevyvolává žádnou činnost) nebo CR+CR+LF. V době, kdy se tyto činnosti začaly řešit pomocí software, ztratila oddělená existence těchto znaků smysl. Záleželo pak jen na tvůrcích systémů, jak se s možností jeden z nich vypustit vypořádali.

Reprezentace

Počítačové programy a operační systémy obvykle reprezentují nový řádek pomocí jednoho nebo dvou řídících znaků.

  • Systémy používající ASCII reprezentují nový řádek buď kódem LF (Line feed, 0x0A) nebo kódem CR (Carriage return, 0x0D). Některé operační systémy používají dva znaky – sekvenci znaku CR následovaného znakem LF (CR+LF).
  • Systémy založené na EBCDIC, zejména IBM mainframe systémy zahrnující z/OS (OS/390), i5/OS (OS/400) používají NEL (Next Line, 0x15). EBCDIC také obsahuje řídící znaky CR a LF, ale číselná reprezentace LF se liší od ASCII kódu.
  • OpenVMS používá souborový systém založený na záznamech. U textových souborů ukládá každý řádek do nového záznamu bez ukončení řídícími znaky. Pokud to aplikace vyžaduje, systém může znaky transparentně doplnit při čtení souboru.

Tabulka kódů

ZkratkaNázevUnicodeISO-8859-2EBCDICOpen MVS EBCDICOznačení v C
CRcarriage return000D0D0D0D"\r"
LFline feed000A0A2525"\n"
CR+LFcarriage return and line feed000D,000A0D,0A0D,250D,25"\r\n"
NELnext line0085851515
VTvertical tab000B0B0B0B
FFform feed000C0C0C0C
LSline separator2028
PSparagraph separator2029

Související články