003
26.10.2009, 22:35 Uhr
0xdeadbeef
Gott (Operator)
|
Das ist ne historisch gewachsene Geschichte - Multics, UNIX und davon abgeleitete Systeme (etwa Linux und Mac OS X) benutzen als Zeilenendenzeichen ASCII 10 (line feed, LF), Commodore und alte Macs benutzten ASCII 13 (carriage return, CR). DEC und CP/M benutzten CR+LF, und MS-DOS ist im wesentlichen ein Abklatsch von CP/M - das hat sich dann bis ins heutige Windows fortgesetzt. Das ist auch der Grund, warum in vielen alten Protokollen wie etwa FTP zwischen Text- und Binärübertragung unterschieden wird - in den meisten Fällen ist der Unterschied lediglich, dass in der Textübertragung die Newlines ggf. ausgetauscht werden.
Was die C-Bibliothek angeht, so werden Dateien eigentlich per default als Textdateien geöffnet, das heißt, bei
C++: |
FILE *fd = fopen("datei.txt", "a");
|
sollten die Newlines ausgetauscht werden. Dagegen öffnet
C++: |
FILE *fd = fopen("datei.dat", "ab");
|
die Datei im binären Modus, so dass unbesehen das rausgeschrieben wird, was das Programm vorhält. Dabei ist '\n' LF und '\r' CR.
Nachtrag: Für mehr Info siehe http://de.wikipedia.org/wiki/Zeilenumbruch -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 26.10.2009 um 22:37 Uhr von 0xdeadbeef editiert. |