Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » C - Newline Zeichen in Textdatei

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.10.2009, 22:00 Uhr
~gerald
Gast


Hallo,

versuche in eine txt Datei zu schreiben. Ich habe die Datei mit a (append) geöffnet.
Das klappt alles soweit nur dass ich statt einer neuen Zeile (\n) ein viereckiges Kästchen in der Datei stehen habe.

Kann mir jemand sagen, wo da der Haken sein könnte?

Danke...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.10.2009, 22:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

unter windows musst du als Zeilenumbruch \r\n schreiben (also erst carriage return, dann line feed)

ansonsten probier sie mal mit "at" zu öffnen (um sie explizit im textmodus und append zu öffnen) das sollte die Zeilenenden eigentlich konvertieren
--
class God : public ChuckNorris { };

Dieser Post wurde am 26.10.2009 um 22:14 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.10.2009, 22:24 Uhr
~gerald
Gast


Danke!

Habe auch gerade festgestellt, dass bei manchen Editoren die Zeilenumbruche korrekt angezeigt werden aber halt bei Notepad nicht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: