Sonderzeichen mit fputs oder fputc in Datei schr

Hallo zusammen

eigentlich habe ich gar nichts kompliziertes vor. Ich will nur ASCII Zeichen in eine Datei schreiben. Das klappt auch wunderbar bis auf eine kleine Ausnahme, wenn ich ein Sonderzeichen schreiben will.

Ich brauche in der Datei folgende Zeichenfolge: bb. Wobei für das Zeichen steht, das in einem Hexeditor mit 0a angezeigt wird.

Wenn ich nun folgendes mache:

char sp[4] ;

sp[0] = 0x62; //‚b‘
sp[1] = 0xa;
sp[2] = 0x62; //‚b‘
sp[3] = ‚\0‘;

fputs(sp, Datei);

dann kommt in der Datei nicht 62 0a 62 an sondern 62 0d 0a 62. Das stinkt mir ganz gewaltig!!! Im Textmodus des Editors wird 0d 0a als Zeilenumbruch interpretiert. Ich brauch aber unbedingt 0a zwischen den 62 bzw ‚b‘.

Wie kann ich das bewerkstelligen???

Ich bin dankbar für jeden Vorschlag.

Albert

Hi Albert :smile:

Wenn ich nun folgendes mache:

char sp[4] ;

sp[0] = 0x62; //‚b‘
sp[1] = 0xa;
sp[2] = 0x62; //‚b‘
sp[3] = ‚\0‘;

fputs(sp, Datei);

dann kommt in der Datei nicht 62 0a 62 an sondern 62 0d 0a 62.

Ja, das liegt daran, dass du deine Datei als Textdatei ausgibst. Unter Windows besteht das Ende einer Datei aus NewLine „\n“ und CarriageReturn „\r“. Das sind die ASCII-Codes 0D und 0A. Wenn du nur eins von beiden ausgibst, dann ergänzt fputs() automatisch zur korrekten Folge 0D 0A.

Wie kann ich das bewerkstelligen???

Du musst die Datei als Binärdatei schreiben:

FILE \*file= fopen("egal.88","wb"); //wirte binary
fwrite (sp, 1, strlen(sp), file);

Das sollte klappen :smile:))

Viele Grüße

Stefan.

Du musst die Datei als Binärdatei schreiben:

FILE *file= fopen(„egal.88“,„wb“); //wirte binary
fwrite (sp, 1, strlen(sp), file);

Das sollte klappen :smile:))

Vielen Dank für die Antwort. Klappt aber leider nicht. Ich werd hier noch wahnsinnig…

Hi Albert :smile:

Wie, das klappt nicht? Zeig doch mal bitte ein bisschen mehr von deinem Source :smile:))

cu Stefan.

Hi Stefan,

ich weiß nicht was ich gestern abend noch falsch gemacht habe. Auf jeden Fall funzts heute morgen mit fwrite so wie Du gesagt hast.

Vielen Dank.
Albert

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]