Warum schreibt das Programm immer ein Zeichen zuviel??
-
hallo, kann mir einer erklären, was an diesem Quellcode falsch ist? Ich habe immer ein zeichen zuviel in der Datei und denke es hängt mit Eof() zusammen.[cpp]void update()
{
/*
hier die Funktion*/
ifstream datein;
datein.open(Datei.c_str(),ios::in);
ofstream dataus;
dataus.open(Database.c_str(),ios::app);
char zeich = ' ';
do
{
zeich = datein.get();
dataus<<zeich;
}while (datein.eof()!= true);
datein.close();
dataus.close();
}
-
Weil das eof bit erst gesetzt wird, nachdem er über das Ende rausgelesen hat(zumindest habe ich das so in erinnerung).D.h. es wird nocheinmal das ausgegeben was schon einmal im Puffer stand.
Versuch es dochmal so:
void update() { /* hier die Funktion */ ifstream datein; datein.open(Datei.c_str(),ios::in); ofstream dataus; dataus.open(Database.c_str(),ios::app); char zeich = ' '; while(datein<<zeich) { std::cout<<zeich<<std::endl; } datein.close(); dataus.close(); }
-
du hast mich nicht genau verstanden: die ausgabe mit cout funktioniert ja, aber das schreiben in eine andere datei nicht, und da hat sich nix geändert mit deinem code, du gibst es ja lediglich formatiert wieder aus
-
void update() { /* hier die Funktion */ ifstream datein; datein.open(Datei.c_str(),ios::in); ofstream dataus; dataus.open(Database.c_str(),ios::app); char zeich = ' '; while(datein<<zeich) { dataus<<zeich;//das sollte es doch sein oder nicht?! } datein.close(); dataus.close(); }
-
int main() { ... zeich = datein.get(); while (datein.eof()!= true) { dataus<<zeich; zeich = datein.get(); } datein.close(); dataus.close(); }
-
der code von Belli funktioniert jetzt. Warum versteh ich zwar nicht, aber trotzdem danke an alle, die sich bemüht haben
-
Weil Du nun erst liest, dann auf eof prüfst, und nur, wenn eof falsch ist, schreibst. Nach dem Schreiben wieder lesen, prüfen und so weiter, versuch es zu verstehen.