Zusätzliches Zeichen beim Scheiben in Datei
-
Beim Schreiben des Zeichens dezimal "10" bzw. Hex "0A"(newline) mit dem Befehl fprintf, format "c" oder mit fwrite wird zusätzlich das Zeichen "13" bzw Hex "0D" (carriage return) vorher eingefügt. Dies mag zwar für einen Drucker sehr praktisch sein, ist aber total unbrauchbar wenn wirklich nur die geschriebenen Zeichen in der Datei haben will. Ich habe das mit mehreren C-,C++Compilern ausprobiert. In Q-Basic erfolgt dieses Einfügen nicht.
Hat jemand eine Idee, wie man dem Compiler das verbieten kann?
-
Du könntest die Funktion fwrite() benutzen.
-
wenn du die datei im binary mode (b) oeffnest und mit fwrite
reinschreibst sollte er kein cr einfuegen.
zeig mal den entsprechenden programmcode.
-
Das Problem müsste wieder mal an Windows liegen. Da windows wieder mal anders mit textdateien umgeht als andere Betriebssysteme. Windows fügt beim Zeilenumbruch in Textdateien immer das cr ein deswegen muss man auch angeben ob man die Datei Text "t" oder Binär "b" öffnen will. Also einfach ein "b" rein und es müsste laufen.
-
Man kann ja vieles auf Windows schieben ... in dem Fall liegts aber eher an !Unix Versuchs doch mal auf nem Mac (Classic im Zweifelsfalle), dort wird statt dem \n ein \r eingefügt.
-
Das mag sein das das beim Mas so ist, allerdings würde ich schon sagen das es an Windows und nicht den anderen Betriebssystemen wie Unix oder Linx liegt da die nur das return (ein zeichen) einfügen aber Windows das carriage return (zwei Zeichen) einfügt. Das soll natürlich nicht heißen das Windows schlechter ist! Es ist ein gutes Betriebssystem für den normalen Anwender aber hat bestimmt auch seine macken (wie natürlich jedes Betriebssystem). Naja ich wollte jetzt kein Streit anfangen über die heiße Frage welches das bessere Betriebssystem ist. MfG
-
guck nochmal hin, ich hab geschrieben !Unix, das heißt, für alle der Sprache C nicht mächtigen "not Unix". Jedes OS ausser Unix unterscheidet Text- und Binärmodus (OK vielleicht nicht jedes, aber alle die ich kenne und auf jeden fall sehr viele bis die meisten)