FDatei.get() == -1 - Was ist da falsch?
-
Hallo!
Warum kommt bei dem letzen FDatei.get() immer -1 raus, anstatt 'R'?
Viele Grüße
pmwProgramm:
#include <iostream> #include <fstream> using namespace std; int main(int argc, char *argv[]) { unsigned long IDateiLaenge, IDateiListeAnz=0; fstream FDatei; FDatei.open(argv[1], ios::in); if (FDatei.is_open() == 0) { konsole("Fehler: Konnte Dateiliste nicht öffnen.\n"); exit(0); } else { FDatei.seekg(0, ios::end); IDateiLaenge = FDatei.tellg(); FDatei.seekg(0, ios::beg); for (unsigned long i=0; i<IDateiLaenge; ++i) { if (FDatei.get() == '\n') { ++IDateiListeAnz; } } if (IDateiListeAnz % 3 == 2) { ++IDateiListeAnz; } if (IDateiListeAnz % 3 != 0 || IDateiListeAnz < 3) { konsole("Fehler: Ungültige Dateiliste.\n"); exit(0); } FDatei.seekg(0, ios::beg); cout << IDateiListeAnz << " " << FDatei.get(); //IDateiListeAnz == 12 - stimmt //FDatei.get() == -1 - falsch!!! } FDatei.close(); return 0; }
Inhalt FDatei:
RLH E:\Eigenes\Eigene Programme\Kompression\ quelldateien\MiniDatLZ77.hex RLH E:\Eigenes\Eigene Programme\Kompression\ quelldateien\MiniDatRLE.hex RLH E:\Eigenes\Eigene Programme\Kompression\ quelldateien\MiniDatHuffman.hex RLH E:\Eigenes\Eigene Programme\Kompression\ quelldateien\ASCII.hex
-
Hallo,
bei mir funktioniert das so, wenn auch nicht das rauskommt, was du erwartest. Denn FDatei.get() liefert den int Wert das Zeichens, also 82. Die -1 würd ich mal als EOF interpretieren. Den Fehler seh ich jetzt aber auch nicht....
-
Ich werde verrück. Ich überleg schon den ganzen Tag und finde den Fehler einfach nicht
-
Hallo,
lösche vor dem letzten seekg einfach mal das eof-bit:FDatei.clear(); FDatei.seekg(0, ios::beg); cout << IDateiListeAnz << " " << FDatei.get();