Wofür steht \r beim Programmieren?

5 Antworten

Es gibt Carriage Return \r (Zurück auf Anfang der Zeile) und Line Feed \n (neue Zeile). Wobei es zumindest auf Windows keine Rolle spielt was man verwendet - es genügt eines davon. Es wird immer eine neue gemacht und auf den Anfang gesprungen.


ChuckBoris  05.05.2015, 20:13

Falsch. Auch auf Windows-System bedeutet das \r - Zeichen nicht, dass man in die nächste Zeile springt, sondern an den Anfang.

0

Wie bereits in den anderen Antworten erwähnt sind sowohl \r als auch \n bestimmte Escape-Zeichen.

Das Zeichen "\n" steht für ((char)10) und "\r" für ((char)13).

Mit "\r\n" hat es folgendes auf sich:

Unter Unix und ähnlichen Systemen (z.B. Linux und MacOS X) führt Zeichen 10 zu einem Zeilenumbruch während Zeichen 13 dazu führt, dass der Cursor an den Zeilenanfang springt.

Bei Windows fürt Zeichen 13 dazu, dass der Cursor zum Zeilenanfang springt und Zeichen 10 dazu, dass der Cursor sich eine Zeile nach unten bewegt.

(Bei alten Homecomputern und MacOS-Versionen war übrigens das Zeichen 13 der Zeilenumbruch.)

Der folgende Code:

printf("Hello\n");
printf("World\n");

Würde unter Windows also zu folgender Ausgabe führen:

Hello
World

Da die Programmiersprache C für Unix entwickelt worden ist, haben die meisten Compiler für Windows bei den meisten Befehlen (z.B. printf) eine Erkennung eingebaut, die automatisch ein "\n" durch ein "\r\n" ersetzt, was zu einem wirklichen Zeilenumbruch führt, so dass Unix-C-Programme auch unter Windows funktionieren.

Diese Erkennung kann man allerdings nicht immer verwenden: Befehle, mit denen man auch Binärdaten (z.B. Bilddateien) bearbeiten kann, haben diese Erkennung natürlich nicht. Daher muss man die Kombination "\r\n" manuell eingeben, wenn man mit solchen Befehlen arbeitet.


TeeTier  05.05.2015, 23:08

Sehr schöne Antwort! DH! :)

Ich hatte vor ca. einem halben Jahr mal einen Crawler geschrieben, dir nur die Zeilenumbrüche untersucht, und dabei festgestellt, dass viele Websites ziemlich wirr gemischt sind.

Zum Beispiel endeten einige Zeilen des HTML-Quelltextes auf Golem.de mit "\n", andere mit "\r\n" und wieder andere mit "\r". Also haben die Leute, die dort am CMS / Layout / Design gearbeitet haben, offensichtlich unter Windows, Linux und am Mac gearbeitet. :)

Davon sieht man normalerweise nichts, wenn man sich den Quelltext anzeigen lässt, da sowieso fast alle Editoren diese Zeichen vereinheitlichen oder an die jeweilige Plattform anpassen.

Den Crawler habe ich übrigens nur gebaut, weil ich mal sehen wollte, ob es in freier Wildbahn tatsächlich Websites gibt, die "\r" als Zeilentrenner benutzen. Und da gibt es tatsächlich sehr viele. :)

Was mich dann noch sehr verwundert hat war, dass ich auch auf "\n\r" gestoßen bin. Und zwar gar nicht mal so selten. Ich hatte dabei erst an einem Bug (z. B. "\n" + "\r\n") gedacht, aber solche Websites haben wirklich konsequent "\n\r" als Zeilentrenner eingesetzt. Muss wohl irgend etwas handgestricktes gewesen sein. :)

Das gleiche gilt für die HTTP-Header von Serverantworten. Die liefern auch oft nur "\n" statt "\r\n" aus. :)

Lange Rede, kurzer Sinn: Man stößt tatsächlich auf "\r", "\n", "\r\n" und "\n\r" als Zeilentrenner. Nach den neuen Unicode-Zeilentrennern habe ich aber noch nicht gesucht ... das wären dann gleich nochmal 3 oder 4 weitere Möglichkeiten, aber die verwendet meines Wissens nach (noch) kein Editor. :)

0

\r ist ein sog. "Carriage Return", d.h. dass der Cursor, nachdem das Zeichen verarbeitet wurde, zurück an den Anfang der Zeile springt.

Ist z.B.nützlich, um in der Konsole den Fortschritt einer etwas länger dauernden Operation anzuzeigen.

Das bedeutet neue Zeile und dann auf Anfang von dieser (quasi Enter auf der Tastatur).

Von welcher Programmiersprache redest du überhaupt? /n ist soweit Ich weiß aus C++, ist das die Sprache die du meinst?


lassmiranda3 
Beitragsersteller
 05.05.2015, 19:51

hab es gesehen wo einer bei Javascript etwas in ein CSV File gespeichert hat

0
RedTigerHeyBack  05.05.2015, 19:52
@lassmiranda3

Ok. Mit Javascipt kenne Ich mich leider noch zu ungut aus. Aber warum interessiert es dich überhaupt? :D

0