Was sind Wagenrücklauf, Zeilenvorschub und Formularvorschub?

500

Was bedeuten die folgenden Steuerzeichen:

  1. Wagenrücklauf

  2. Zeilenvorschub

  3. Formularvorschub

Ashna
quelle
14
Was bedeutet "Wagenrücklauf"? Ich sehe auf meinem Laptop keinen "Wagen", der "zurückkehrt". : s
Jean Hominal
12
@JeanHominal Der Wagen bedeutet im Grunde den Cursor (oder den Zeiger in alten Schreibmaschinen), und return bedeutet, zum Anfang dieser Zeile zurückzukehren.
SOFe
Ich sehe keine abgeschlossenen Drähte (oder Glasscheiben) in meinem "Terminal" "Fenster", noch ist ein "Teletyp" an / dev / tty1 angeschlossen. Sie sind alle zu Metaphern geworden.
Piskvor verließ das Gebäude am

Antworten:

621

Wagenrücklauf bedeutet, zum Anfang der aktuellen Zeile zurückzukehren, ohne nach unten vorzurücken. Der Name stammt aus dem Wagen eines Druckers, da Monitore selten waren, als der Name geprägt wurde. Dies wird üblicherweise als CR\r abgekürzt und hat den ASCII-Wert oder .130x0D

Zeilenvorschub bedeutet, zur nächsten Zeile nach unten zu gelangen. Es wurde jedoch neu verwendet und umbenannt. Wurde als „Zeilenvorschub“, es endet Leitungen (üblicherweise mit verwechselt Trennlinien). Dies wird üblicherweise als LF oder NL \nabgekürzt und hat den ASCII-Wert oder . CRLF (aber nicht CRNL) wird für das Paar verwendet .100x0A\r\n

Formularvorschub bedeutet, nach unten zur nächsten "Seite" zu gelangen. Es wurde üblicherweise als Seitentrennzeichen verwendet, wird jetzt aber auch als Abschnittstrennzeichen verwendet. (Es wird im Quellcode gelegentlich verwendet, um logisch unabhängige Funktionen oder Funktionsgruppen zu unterteilen.) Texteditoren können dieses Zeichen verwenden, wenn Sie "einen Seitenumbruch einfügen". Dies wird üblicherweise als FF\f abgekürzt und hat den ASCII-Wert oder .120x0C


Als Steuerzeichen können sie auf verschiedene Arten interpretiert werden.

Der häufigste Unterschied (und wahrscheinlich der einzige, über den man sich Sorgen machen sollte) ist, dass die Zeilen mit CRLF unter Windows, NL unter Unix-Likes und CR auf älteren Macs enden (die Situation hat sich mit OS X dahingehend geändert, dass sie wie Unix ist). Beachten Sie, dass die Bedeutungsverschiebung von LF nach NL für genau dasselbe Zeichen die Unterschiede zwischen Windows und Unix ergibt. (Windows ist natürlich neuer als Unix, daher wurde diese semantische Verschiebung nicht übernommen. Ich kenne die Geschichte von Macs mit CR nicht.) Viele Texteditoren können Dateien in einem dieser drei Formate lesen und zwischen ihnen konvertieren , aber nicht alle Dienstprogramme können.

Der Formularvorschub ist etwas interessanter (obwohl er weniger häufig direkt verwendet wird) und kann mit der üblichen Definition des Seitentrennzeichens nur zwischen Zeilen (z. B. nach der Zeilenumbruchsequenz von NL, CRLF oder CR) oder am Anfang oder stehen Ende der Datei.

Roberto Caboni
quelle
10
Ich kann bestätigen , dass OS X NL als Zeilenbegrenzer verwendet, so wie Unix (weil OS X ist ein Unix). CR wurde unter Mac OS 9 und niedriger verwendet.
Rory O'Kane
1
Das FF-Zeichen mag heute seltsam erscheinen (zusammen mit dem Klingelzeichen "STRG-G"), aber es hatte eine größere Relevanz, als Videoanzeigen weitaus seltener waren und Hardcopy-Terminals als Datenanzeigen verwendet wurden.
Rick Sarvas
Ist das nicht Futterkontrolle \x0c?
Tjorriemorrie
2
"Ich kenne die Geschichte der Macs mit CR nicht." Das kam wahrscheinlich vom Apple II mit CR. CR war auch auf anderen 8-Bit-Systemen wie Commodore und Tandy üblich. ASCII war auf diesen Systemen nicht universell: Commodore verwendete PETSCII mit LF bei 0x8d (!). Atari hatte überhaupt keinen LF-Charakter. Aus irgendeinem Grund war CR = 0x0d mehr oder weniger Standard.
Ssswift
125

\r ist Wagenrücklauf und bewegt den Cursor zurück, als ob ich tun würde-

printf("stackoverflow\rnine")
ninekoverflow

bedeutet, dass der Cursor an den Anfang von "Stackoverflow" verschoben wurde und die ersten vier Zeichen überschrieben werden, da "neun" vier Zeichen lang ist.

\n ist ein neues Zeilenzeichen, das die Zeile ändert und den Cursor an den Anfang einer neuen Zeile wie folgt bringt.

printf("stackoverflow\nnine")
stackoverflow
nine

\f Ist Form Feed, ist seine Verwendung veraltet, aber es wird verwendet, um Einrückungen wie zu geben

printf("stackoverflow\fnine")
stackoverflow
             nine

wenn ich gerne schreibe

printf("stackoverflow\fnine\fgreat")
stackoverflow
             nine
                 great
user3346547
quelle
3
Dieses Beispiel funktioniert jedoch nicht in Hochsprachen!
Sina Karvandi
@ ᔕI ᑎᗩ Kᗩᖇ ᐯᗩᑎᗪ I es tut: Sie können mindestens das gleiche in der Linux-Shell mit dem printfDienstprogramm von coreutils tun . Oder sogar mit echo -eneinem Bash.
Ruslan
Wie übergebe ich alle Zeilen als eine einzelne Zeile in einer Datei?
Paras Singh
8
Der Formularvorschub wird nicht zum Einrücken verwendet. Wenn Sie einige davon an einen Drucker senden, wird Papier ausgespuckt. Was Sie als \ftatsächlich beschrieben haben, ist \veine vertikale Registerkarte, vorausgesetzt, beide sehen in der Konsole gleich aus.
cprn
printf("123\f456\f789");zeigt /> <fett> 123456789 </ fett> auf der Konsole.
Mayur
31

Schauen Sie sich Wikipedia an :

Systeme, die auf ASCII oder einem kompatiblen Zeichensatz basieren, verwenden entweder LF (Zeilenvorschub, '\ n', 0x0A, 10 in Dezimalzahl) oder CR (Wagenrücklauf, '\ r', 0x0D, 13 in Dezimalzahl) einzeln oder CR gefolgt von CR LF (CR + LF, 0x0D 0x0A). Diese Zeichen basieren auf Druckerbefehlen: Der Zeilenvorschub zeigte an, dass eine Papierzeile aus dem Drucker herausgeführt werden sollte, und ein Wagenrücklauf zeigte an, dass der Druckerwagen zum Anfang der aktuellen Zeile zurückkehren sollte.

Tanascius
quelle
25

\fwird für Seitenumbrüche verwendet. Sie können keinen Effekt in der Konsole sehen. Wenn Sie diese Zeichenkonstante in Ihrer Datei verwenden, können Sie den Unterschied erkennen.

Ein anderes Beispiel ist, dass Sie, wenn Sie Ihre Ausgabe in eine Datei umleiten können, keine Datei schreiben oder die Dateiverwaltung verwenden müssen.

Zum Beispiel:

Schreiben Sie diesen Code in c ++

void main()    
{
    clrscr();
    cout<<"helloooooo" ;

    cout<<"\f";
    cout<<"hiiiii" ;

}

und wenn Sie dies kompilieren, generiert es eine exe (zum Beispiel abc.exe)

Anschließend können Sie Ihre Ausgabe folgendermaßen in eine Datei umleiten:

abc > xyz.doc

Öffnen xyz.docSie dann die Datei , um den tatsächlichen Seitenumbruch zwischen hellooo und hiiii zu sehen.

Balram Dixit
quelle
21

Abgesehen von den obigen Informationen gibt es noch eine interessante Geschichte von LF (\ n) und CR (\ r). [Ursprünglicher Autor: 阮一峰 Quelle: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Bevor der Computer herauskam, gab es einen Fernschreiber namens Teletype Model 33. Er kann jeweils 10 Zeichen drucken zweite. Es gibt jedoch ein Problem: Nach Abschluss des Druckvorgangs jeder Zeile dauert es 0,2 Sekunden, um zur nächsten Zeile zu gelangen. Dies ist die Zeit, in der 2 Zeichen gedruckt werden. Wenn während dieser 0,2 Sekunden ein neues Zeichen übertragen wird, geht dieses neue Zeichen verloren.

Wissenschaftler haben einen Weg gefunden, um dieses Problem zu lösen. Sie fügen nach jeder Zeile zwei Endzeichen hinzu. Eines ist "Wagenrücklauf", um den Drucker anzuweisen, den Druckkopf nach links zu bringen.; Der andere ist "Zeilenvorschub". Er weist den Drucker an, das Papier um 1 Zeile nach oben zu bewegen.

Später wurde der Computer populär, diese beiden Konzepte werden auf Computern verwendet. Zu dieser Zeit war das Speichergerät sehr teuer, daher sagten einige Wissenschaftler, es sei teuer, zwei Zeichen am Ende jeder Zeile hinzuzufügen. Eines ist ausreichend, daher gibt es einige Argumente, welches verwendet werden soll.

Unter UNIX / Mac und Linux steht '\ n' am Ende jeder Zeile, unter Windows steht '\ r \ n' am Ende jeder Zeile. Die Folge dieser Verwendung ist, dass Dateien unter UNIX / Mac in einer Zeile angezeigt werden, wenn sie unter Windows geöffnet werden. Während die Datei in Windows am Ende jeder Zeile ein ^ M enthält, wird sie unter UNIX oder Mac geöffnet.

wxie
quelle
1
Mit der Veröffentlichung von OSX (basierend auf BSD-Unix) wechselte der Mac zu '\ n' - Unix-Zeilenenden.
Jonathan Cross
"Dateien unter UNIX / Mac werden in einer Zeile angezeigt, wenn sie unter Windows geöffnet werden." WRITE.EXE(auch bekannt als Wordpad) kann sie gut anzeigen.
Thecarpy
18

Bei alten Papierdruckerterminals umfasste das Vorrücken zur nächsten Zeile zwei Aktionen: Bewegen des Druckkopfs zurück zum Anfang des horizontalen Scanbereichs (Wagenrücklauf) und Vorschieben der Papierrolle, auf die gedruckt wird (Zeilenvorschub).

Da wir keine Papierdrucker-Terminals mehr verwenden, sind diese Aktionen nicht mehr wirklich relevant, aber die Zeichen, mit denen sie signalisiert werden, sind in verschiedenen Inkarnationen hängen geblieben.

Bernstein
quelle
Tatsächlich bewegt 'Wagenrücklauf' den Druckkopf nicht nach links, sondern den Wagen, der die Walze hält, nach rechts. Früher gab es einen langen Hebel, der von der linken Hand betätigt wurde, um dies zu tun. Siehe en.wikipedia.org/wiki/Typewriter
Mark Lakata
2
@MarkLakata Richtig für Schreibmaschinen, aber diese Antwort bezieht sich auf alte Druckterminals. Zum Beispiel das DEC LA36 ( columbia.edu/cu/computinghistory/la36.html ).
Peter Cardona
12

Stellen Sie sich einen IBM 1403 Impact-Drucker vor. CR bewegte den Druckkopf an den Anfang der Zeile, schob das Papier jedoch NICHT vor. Dies ermöglichte ein "Überdrucken", wobei mehrere Ausgabezeilen in einer Zeile platziert wurden. Dinge wie Unterstreichen wurden auf diese Weise erreicht, ebenso wie der BOLD-Druck. LF schob das Papier eine Zeile vor. Wenn es keine CR gäbe, würde die nächste Zeile als gestaffelter Schritt gedruckt, da LF den Druckkopf nicht bewegte. FF brachte das Papier auf die nächste Seite. In der Regel wurde der Druckkopf auch an den Anfang der ersten Zeile der neuen Seite verschoben. Möglicherweise benötigen Sie jedoch CR dafür. Natürlich haben die meisten Programmierer CRFF anstelle von CRLF am Ende der letzten Zeile einer Seite codiert, da eine von FF erstellte zusätzliche CR keine Rolle spielt.

Dick Guertin
quelle
Dies ist die einzige Antwort, die die volle Bedeutung des Wagenrücklaufs erklärt.
Lee
12

Zusamenfassend :

Carriage_return ( \roder 0xD): Um die Kontrolle bei Start der gleichen Linie .

Line_Feed ( \noder 0xA): Um die Kontrolle beim Beginn der nächsten Zeile zu übernehmen .

form_feed ( \foder 0xC): Um die Kontrolle am Anfang der nächsten Seite zu übernehmen .

Ritik Kamboj
quelle
2
Eine prägnante Antwort wie diese sollte gefördert werden.
user5280911
10

Als Ergänzung,

1, Wagenrücklauf : Dies ist eine Druckerterminologie, bei der der Druckort an den Anfang der aktuellen Zeile geändert wird. In der Computerwelt bedeutet dies in den meisten Fällen, zum Anfang der aktuellen Zeile zurückzukehren, steht jedoch selten für eine neue Zeile.

2, Zeilenvorschub : Dies ist eine Druckerterminologie, bei der das Papier um eine Zeile vorgerückt wird. Wagenrücklauf und Zeilenvorschub werden also zusammen verwendet, um am Anfang einer neuen Zeile mit dem Drucken zu beginnen. In der Computerwelt hat es im Allgemeinen die gleiche Bedeutung wie Newline.

3, Formular-Feed : Es ist eine Druckerterminologie, ich mag die Erklärung in diesem Thread .

Wenn Sie für einen Drucker im Stil der 1980er Jahre programmieren, wird das Papier ausgeworfen und eine neue Seite gestartet. Sie werden es mit ziemlicher Sicherheit nie brauchen.

http://en.wikipedia.org/wiki/Form_feed

Es ist fast veraltet und Sie können sich auf Escape-Sequenz \ f - Formular-Feed beziehen - was genau ist das? für eine detaillierte Erklärung.

Beachten Sie, dass wir auf einigen Plattformen CR oder LF oder CRLF verwenden können, um für Newline zu stehen, auf anderen Plattformen jedoch nicht für Newline. Weitere Informationen finden Sie im Wiki Newline .

LF: Multics, Unix und Unix-ähnliche Systeme (Linux, OS X, FreeBSD, AIX, Xenix usw.), BeOS, Amiga, RISC OS und andere

CR: Commodore 8-Bit-Computer, Acorn BBC, ZX Spectrum, TRS-80, Apple II-Familie, Oberon, das klassische Mac OS bis Version 9, MIT Lisp Machine und OS-9

RS: QNX-Implementierung vor POSIX

0x9B: Atari 8-Bit-Maschinen mit ATASCII-Variante von ASCII (155 in Dezimalzahl)

CR + LF: Microsoft Windows, DOS (MS-DOS, PC-DOS usw.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC und die meisten anderen frühen Nicht-Unix- und Nicht-IBM-Betriebssysteme

LF + CR: Spornete Textausgabe von Acorn BBC und RISC OS.

Eugene
quelle
3

"\ n" ist das Zeilenvorschubzeichen. Es bedeutet, die aktuelle Zeile zu beenden und für jeden, der sie liest, zu einer neuen Zeile zu wechseln.

vpit3833
quelle
3

Wagenrücklauf und Zeilenvorschub beziehen sich auch auf Schreibmaschinen, da sich das Papier mit einem kleinen Druck auf den Griff auf der linken Seite des Wagens (der Stelle, an der das Papier hingeht) um einen kleinen Betrag um den Zylinder dreht und den Zylinder vorschiebt eine Zeile dokumentieren. Wenn Sie mit der Eingabe einer Zeile fertig waren und mit der nächsten fortfahren möchten, haben Sie stärker gedrückt, indem Sie eine Zeile vorgerückt und den Wagen ganz nach rechts geschoben haben, und dann die Eingabe von links nach rechts wieder aufgenommen, während der Wagen mit jedem Tastendruck fuhr . Unnötig zu erwähnen, dass Zeilenumbruch die Standardeinstellung für die gesamte Textverarbeitung der damaligen Zeit war. P: D.

TheLastWordSword
quelle
2

Dies sind nicht druckbare Zeichen, die sich auf das Konzept der "neuen Zeile" beziehen. \ n ist Zeilenvorschub. \ r ist Wagenrücklauf. Auf verschiedenen Plattformen haben sie unterschiedliche Bedeutungen in Bezug auf eine gültige neue Zeile. In Windows lautet eine neue Zeile \ r \ n. Unter Linux \ n. In Mac \ r.

In der Praxis fügen Sie sie in eine beliebige Zeichenfolge ein, was sich auf den Ausdruck der Zeichenfolge auswirkt.

Palantir
quelle