array in file schreiben: Wo kommen die komischen Zeichen her?
-
Ich habe ein development kit und programmiere darauf eine Anwendung, die einen Satz Daten erhaelt (natuerlich das Lena bild), damit rumrechnet und schliesslich die berechneten Daten an ein anderes System weiterleitet. Um das auszuprobieren, schreibe ich die berechneten Daten in ein File. Die Resultate sind Bitfolgen (char array) a 16 Bit. Und zwar mache ich das mit
FILE *resultado = NULL; char binaer_zahl[16]; resultado = fopen ("/mnt/host/codebk.txt", "w"); ... ... fprintf (resultado, "%s ", binaer_zahl);
(fprintf ist in einer for Schleife, wird also 1024 mal ausgefuehrt)
Das klappt fast. Es werden jeweils 16Bit ins File geschrieben, dann jedoch 4 Zeichen und dann der (gewuenschte) Abstand. Das sieht dann so aus:0001100001101011pXÃA 00010100...
Ich habe erst gedacht, die Zeichen kommen vielleicht vom '\0', das den String (binaer_zahl) abschliesst. Die Zeichen sehen aber immer anders aus. Dann habe ich ein kleines Testprogramm geschrieben, das einwandfrei funktioniert:
char test[30] = "hola mundo"; FILE *tst = NULL; tst = fopen ("/mnt/host/codebk.txt", "w"); for (i=0; i<8; i++) fprintf (tst, "%s ", test); fclose(tst);
Ich habe es auch schon mit
fputs( binaer_zahl, resultado);
probiert, hat aber zum selben Resultat gefuehrt.
Ich grueble und grueble, forsche im Internet und in Buechern, aber diese merkwuerdigen Zeichen sind mir ein Raetsel.
Vielleicht kennt jemand das Problem und kann mir helfen?
Ich waere sehr dankbar!
-
Diese Zeichen kommen ziemlich sicher vom (nicht vorhandenen) \0 - fprintf() liest nämlich so lange weiter, bis es hinter deinem Array zufällig einen Byte mit dem Inhalt 0x00 findet. Und hinter dem Array liegt vermutlich eine Zählvariable oder eine von fprintf() (oder deinem Dezimal->Binär Umwandler) selber verwendete Hilfsvariable als nächster Wert auf dem Stack.
-
Ja, genau das war das Problem!
Vielen Dank!