Forum: PC-Programmierung Probleme mit Textdatei


von John (Gast)


Angehängte Dateien:

Lesenswert?

Ich möchte unter Visual Studio 6.0 C++ den Inhalt eines Array in eine 
Textdatei schreiben. Die Textdatei wird zwar angelegt aber der Inhalt 
entspricht nicht dem Arrayinhalt.
1
  FILE * myfile;
2
  int buffer[255];
3
  for (int m=0;m<256;m++)
4
    buffer[m] = 111;
5
6
  myfile = fopen( "log_datei.txt" , "w+" );
7
  fwrite (buffer , sizeof(buffer[0]) , sizeof(buffer) , myfile );
8
  fclose(myfile);

Ich verstehe nicht wo der Fehler liegen könnte.

von Peter (Gast)


Lesenswert?

Hallo,
die frage ist was du in der text datei erwartest, sie wie es auf den 
ersten blick aussieht seht der array inhalt in der text datei, so wie es 
auch der code erwarten lässt..

Oder brauchst du die zahlen im Textformat, dann muss es mit fprintf 
einzeln rausgeschrieben werden.

von John (Gast)


Lesenswert?

Ja natürlich brauche ich die Zahlen im Textformat.

von John (Gast)


Lesenswert?

Mit fprintf erscheint nun eine andere Fehlermeldung:

'fprintf' : Konvertierung des Parameters 1 von 'char [21]' in 'struct 
_iobuf *' nicht moeglich

von Peter (Gast)


Lesenswert?

dann muss dir aber schon aufgefallen sein das nicht mal ein trennzeichen 
vorhanden ist.

for( int i = 0; i < sizeof( buffer ); ++i ) {
  fprintf( myfile, "%d;", buffer[i] );
}


nicht getestet, aber so sollte es gehen

von HildeK (Gast)


Lesenswert?

>  int buffer[255];
buffer ist 255 groß
>  for (int m=0;m<256;m++)
>    buffer[m] = 111;
du schreibst aber 0 ... 255, also 256 Zahlen hinein ...

von Peter (Gast)


Lesenswert?

das Programm schreibt noch böse an stellen im Speicher rum wo es nicht 
darf.

Wenn as Array 255 Elemente hat, dann sollte man nur von 0-254 zugreifen, 
buffer[255] ist nicht mehr zulässig -> for (int m=0;m<255;m++)

von HildeK (Gast)


Lesenswert?

Außerdem steht in deiner Datei schon ungefähr das richtig drin:
1
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
2
00000000   6F 20 20 20 6F 20 20 20  6F 20 20 20 6F 20 20 20   o   o   o   o
6F hex ist 111 dez!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Außerdem steht in deiner Datei schon ungefähr das richtig drin:

Im Prinzip ja, nur ist 111 != 0x2020206F
Also sieht das ganze eher so aus:
1
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
2
00000000   6F 00 00 00 6F 00 00 00  6F 00 00 00 6F 00 00 00

von Peter (Gast)


Lesenswert?

@Rufus t. Firefly
vermutlich wurde die text datei mit einen editor geöffnet und wieder 
gespeichert, da kann es passieren das aus 0x00 -> 0x20 wird

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.