deteiende unter WinNT finden



  • moin!
    nach langer zeit bin ich wieder mit dem programmieren angefangen und wollt ein kleines verschlüsselungsprogramm schreiben.
    bis jetzt kann es erst dateien kopieren:

    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        ifstream einda("D:\\music.mp3");
        ofstream ausda("D:\\muzik.mp3");
        char z;
    
         if(!einda)
          cout << "File not found";
          else
         while(einda.get(z))
            ausda.put(z);
    
        return EXIT_SUCCESS;
    }
    

    das problem is jetzt, dass das dateiende nicht richtig gefunden wird. bei txt-dateien klappt es, aber bei mp3's wird eof schon nach dem ID3-Dingens gemeldet. ich habs mit verschiedenen compilern (dev-c++, turbo c++) und in verschiedenen sprachen (C++, C, Delphi) probiert, aber immer wird das Dateiende zu früh gefunden. Erst als ich das Programm unter cygwin und damit "quasi" unter UNIX kompiliert habe, hats geklappt.
    Warum funktioniert EOF unter WinXP und Win2k (also unter den WinNT-Systemen) nicht richtig und wie kann man das ändern?



  • Nur Textdateien werden mit EOF beendet, bei Binärdateien kann das Zeichen auch inmitten der Datei als Byte auftauchen.

    => Datei im Binörmodus öffnen.

    MfG SideWinder



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • danke SideWinder!!
    jetzt klappts! *schäm* da hätt ich auch selber drauf kommen können...
    aber meine frage bleibt.... warum funktioniert das unter cygwin ohne binärmodus, unter windows aber nicht? bei cygwin hab ich es mit g++ kompiliert und das ist doch , soviel ich weiß, dergleiche compiler, der auch in dev-c++ drin is, oder? alles sehr mysteriös... 😮


Anmelden zum Antworten