Was bedeuten die folgenden Steuerzeichen:
Wagenrücklauf
Zeilenvorschub
Formularvorschub
Was bedeuten die folgenden Steuerzeichen:
Wagenrücklauf
Zeilenvorschub
Formularvorschub
Antworten:
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 .13
0x0D
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 \n
abgekürzt und hat den ASCII-Wert oder . CRLF (aber nicht CRNL) wird für das Paar verwendet .10
0x0A
\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 .12
0x0C
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.
\x0c
?
\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
printf
Dienstprogramm von coreutils tun . Oder sogar mit echo -en
einem Bash.
\f
tatsächlich beschrieben haben, ist \v
eine vertikale Registerkarte, vorausgesetzt, beide sehen in der Konsole gleich aus.
printf("123\f456\f789");
zeigt /> <fett> 123456789 </ fett> auf der Konsole.
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.
\f
wird 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.doc
Sie dann die Datei , um den tatsächlichen Seitenumbruch zwischen hellooo und hiiii zu sehen.
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.
WRITE.EXE
(auch bekannt als Wordpad) kann sie gut anzeigen.
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.
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.
Zusamenfassend :
Carriage_return ( \r
oder 0xD
): Um die Kontrolle bei Start der gleichen Linie .
Line_Feed ( \n
oder 0xA
): Um die Kontrolle beim Beginn der nächsten Zeile zu übernehmen .
form_feed ( \f
oder 0xC
): Um die Kontrolle am Anfang der nächsten Seite zu übernehmen .
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.
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.
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.
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.