mikrocontroller.net

Forum: Compiler & IDEs Datei binär kopieren


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi hab mir einen Code geschrieben der mir eine Datei binär kopiert.
Ich überprüfe nach dem schreiben von 500 Bytes die Position und sie sind
nicht gleich groß!?

Wo liegt den mein Fehler?
  //Datei screiben 
    ofstream wf;
    ifstream rf;
                unsigned char tmp;
    rf.open("C:\\daten.bin",ifstream::in | ios_base::binary);
    wf.open("C:\\save.bin",ios_base::out | ios_base::binary );
  
          for(int i=0;i < 500;mm++)
    {
      rf>>tmp;
      
      wf<<tmp;
      wf.flush();
      
    }
    //hier überprüfe ich die position
    pos  =wf.tellp();
    pos1=rf.tellg();

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du dir die kopierte Datei mal angesehen?
Da fehlen wohl die Leerzeichen.

Außerdem wären vollständige und korrekte Quelltexte besser als 
unvollständige und falsch kopierte...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Hi hab mir einen Code geschrieben der mir eine Datei binär kopiert.

Der kopiert die Datei nicht binär, denn das hier:

>       rf>>tmp;
>
>       wf<<tmp;

sind Operatoren, um Text zu lesen bzw. schreiben. Wenn du hier binär 
kopieren willst, bietet es sich an, gleich direkt filebuf zu verwenden, 
statt streams. Siehe
http://www.cplusplus.com/reference/iostream/filebuf/

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es geht auch mit streams, man muß nur sagen, daß white space
nicht wegeworfen werden soll:
     rf.open...
     rf >> std::noskipws;
     for( ...

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerde ja einfach mit fopen, fread, fwrite, fclose...

Autor: Marcus Overhagen (marcus6100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch mehr low level wären open/read/write/close. Eigentlich gibts hier 
keinen Grund für stream IO.

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.