Besteht der Windows-Wagenrücklauf \ r \ n aus zwei Zeichen oder einem Zeichen?


Antworten:


113

Dies sind zwei Zeichen:

  • \r ist Wagenrücklauf;
  • \n ist Zeilenvorschub.

Zwei Zeichen zusammen repräsentieren eine neue Zeile unter Windows. Während unter Linux \nneue Linie darstellt. Der Cursor bewegt sich unter Linux an den Anfang einer neuen Zeile. Unter Windows bleibt der Cursor in derselben Spalte in der Konsole, jedoch in der nächsten Zeile.

\rUnter Linux hat dies den gleichen Effekt wie unter Windows: Bewegt den Cursor an den Zeilenanfang. Es ist möglich, verschiedene Informationen in derselben Zeile zu drucken, in \rder anstelle von verwendet wird \n.


3
+1. Als zusätzliche Info zum OP: Newline .
informatik01

7

Eigentlich \r is 0x0D (^M) and \n is 0x0A (^J)aber ..... unter Windows:

\n will write 0x0D 0x0A

unter Unix:

\r will write 0x0D
\n will write 0x0A

Daher sollten wir unter Windows \ x0A explizit drucken, wenn wir eine Zeile nach unten verschieben möchten, während wir in derselben Spalte bleiben.
Viet

Wenn ich recht habe, liegt dies an der Zeichenkonvertierung beim Öffnen von Dateien als Textströme. Die Behandlung stdoutals Binärdatenstrom anstelle eines Textstroms würde dazu führen \n, dass die Sohle 0x0Anicht unter 0x0D 0x0AWindows geschrieben wird. Siehe die Antwort von @FredFoo.
Loxaxs

6

Kommt auf die Einstellung an. \r\nist zwei Bytes breit (in ASCII, UTF-8 usw.), aber E / A-Bibliotheken wie die C- stdioBibliothek und andere können im Textmodus zwischen \nund \r\nquasi transparent übersetzen.

Dh auf einer Windows-Plattform ein C-Programm, das einen Textmodus-Stream txt_inmit liest

while ((c = getc(txt_in)) != EOF)
    printf("%02x\n", c);

meldet den ASCII-Code für nicht \r. Umgekehrt putc('\n', txt_out)wird tatsächlich \r\nin den Textmodus-Stream geschrieben txt_out.


5

Windows unterscheidet nicht zwischen \r\nzwei anderen Zeichen. Es gibt jedoch eine Situation, in der es als ein Zeichen behandelt wird: Wenn Sie die C-Laufzeit verwenden und eine Datei als Text öffnen, wird \r\ndie Datei als gelesen \nund \nin die Datei als geschrieben \r\n.


3

Ja, es sind zwei Zeichen: Wagenrücklauf '\ r' gefolgt von Zeilenvorschub '\ n'.


0

Ich führte einige Tests (nichts Besonderes) mit Notepad ++ und Sublime Text 2 auf Windows, und es stellt sich heraus , dass \rund \nin der Tat zwei unterschiedliche Charaktere sind, aber ...

Verschiedene Texteditoren werden möglicherweise eingefügt oder nicht, \rwenn die Eingabetaste gedrückt wird.

Versuchen Sie Folgendes in Ihrem Texteditor:

1
2
3
4
5

Drücken Sie dann Strg + F , aktivieren Sie reguläre Ausdrücke und suchen Sie nach \r. Abhängig von Ihrem Texteditor und seinen Einstellungen können Sie am Ende jeder Zeile ein Zeichen "treffen" oder "nicht treffen". Wenn der obige Text aus einem anderen Editor kopiert wird, kann sich auch das Verhalten unterscheiden ...

Einige Texteditoren ermöglichen Anpassungen in ihren Einstellungen, in dem Sie festlegen können , wenn Sie es vorziehen , \r\noder Unix-Stil \neingeführt werden , wenn Sie die Taste Return . Darüber hinaus können Sie möglicherweise festlegen , dass ein konsistenter Stil erzwungen werden soll, indem Sie das \rZeichen entfernen oder einfügen , bevor Sie eine Datei speichern.


4
Sie sollten sich nicht auf einen Texteditor verlassen, da einige von ihnen beim Laden der Datei etwas Magisches bewirken können. Die richtige Möglichkeit zur Überprüfung besteht darin, die Datei in einem Hex-Editor zu öffnen.
Telemat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.