<CRLF> und '\n'



  • Was ist der Unterschied zwischen '\n' und <CRLF> ?
    Ich habe gelesen

    ...for example those, that use <CRLF> (Carriage Return and Line Feed) instead of newline to terminate lines.

    Das hiesse ja, dass es einen Unterschied gibt.
    Aber newline ist doch '\n' und CRLF "\r\n" oder nicht?



  • Ja. Aber beide haben den gleichen Effekt auf der Konsole, AFAIK.



  • Unter Windows wird Newline immer per CRLF gemacht - unter Unix aber zB nur per \n

    Es gibt also schon einen Unterschied.



  • Da man in Windows aber zwischen Binär und Text unterscheidet, musst du dich darum nur im Binärmodus kümmern, bei Texten wird ein \n automatisch zu einem \r\n 🙂



  • Unter Unix, Windows und Mac sind die Zeilenumbrüche jeweils unterschiedlich repräsentiert. Bei C/C++ ist aber ein Zeilenumbruch auf LF ('\n') genormt.
    Im "Textmodus" ist es deswegen am Compiler, das '\n' in das für das System jeweils gültige Format zu "übersetzen".
    Unter Windows wäre das, wie schon gesagt, CR LF also "\r\n", für Unix bliebe es beim '\n' und für Mac wäre es CR, also '\r'.



  • @sarfuan
    Ist bei MacOSX die Zeilentrennung nicht mittlerweile \n? Ist ja immerhin ein UNIX Derivat.



  • Jupp. Bei neuen Dingen definitiv LF. Aber generell ist unter MacOSX die Zeilenumbruchsgeschichte nicht mehr so langweilig wie unter Windows oder "normalen" Unices - denn jetzt hat man praktisch beides *g*



  • nur mal so: heisst das dass ich persönlich am besten tue, im textmode nur mit '\n' zu coden (C/C++), egal für welche plattform (oder am besten: plattform-independent) ?



  • Selbstverständlich.
    Ausnahme ist jedoch, wenn du z.B. direkt mit API-Aufrufen arbeitest. Um mal ein Beispiel zu nennen: WinAPI-Funktionen nehmen keine automatische Übersetzung von LF nach CR LF vor. Da muss man schon selber immer für CR LF sorgen.
    Aber solange du Standard-C/C++-Funktionen verwendest, ist LF immer ein Zeilenumbruch.


Anmelden zum Antworten