www.mikrocontroller.net

Forum: PC-Programmierung Probleme mit Textdatei


Autor: John (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.
  FILE * myfile;
  int buffer[255];
  for (int m=0;m<256;m++)
    buffer[m] = 111;

  myfile = fopen( "log_datei.txt" , "w+" );
  fwrite (buffer , sizeof(buffer[0]) , sizeof(buffer) , myfile );
  fclose(myfile);

Ich verstehe nicht wo der Fehler liegen könnte.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja natürlich brauche ich die Zahlen im Textformat.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit fprintf erscheint nun eine andere Fehlermeldung:

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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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++)

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem steht in deiner Datei schon ungefähr das richtig drin:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
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!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   6F 00 00 00 6F 00 00 00  6F 00 00 00 6F 00 00 00

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.