Aus Dateien lesen und in Dateien schreiben!
-
Poste mal deinen Code, mit dem du die Datei öffnest und schließt.
PS: V O R R A U S wird "Voraus" geschrieben
-
*gg* thanx im vorraus.. ein häufig gemachter fehler!
wenn du die datei nach dem schreiben nicht mehr zum schreiben öffnen kannst, liegt das wahrscheinlich daran, dass die datei noch immer geöffnet ist, bzw. ein anderes programm aus der datei liest.
hast du den FILEpointer auch wirklich wieder geschlossen?
mfG (c)h
-
poste einfach deinen Code
mfg CSS
-
Du musst die Datei wieder schließen.
@chille: In C++ gibt es den aus C bekannten FilePointer FILE* nicht mehr, er muss den Stream schließen mit datei.close() bevor er die Datei wieder öffnen kann.
Ist ein Standard-C++-Problem.
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.
-
SideWinder schrieb:
@chille: In C++ gibt es den aus C bekannten FilePointer FILE* nicht mehr, er muss den Stream schließen mit datei.close() bevor er die Datei wieder öffnen kann.
Ist ein Standard-C++-Problem.
sorry... hab nicht genau genug geschaut....
ich kann natürlich C++ auch, bin aber C gewohnt(lernen wir in der schule), deshalb die verwechslung.mfG (c)h
-
Fürn Stift schon okay
MfG SideWinder
-
Also der Code. Ich habe doch die Datei wieder geschlossen... Aber wenn ich lese, dann schreibe, dann gehts nicht nochmal auf zum lesen!
-
Also der Code. Ich habe doch die Datei wieder geschlossen... Aber wenn ich lese, dann schreibe, dann gehts nicht nochmal auf zum lesen!
//[...] hier fehlt der anfang, ist nicht wichtig if(wahl=='j' || wahl=='J') { string dateiname="Save.txt"; ifstream dat_lesen; dat_lesen.open(dateiname.c_str(), ios_base::in); if(!dat_lesen) { cout <<"Die Datei Save.txt konnte nicht zum Lesen geoeffnet werden"<<endl; fflush(stdin); getchar(); } char zeichen;string str=""; while(zeichen!=' ' && !dat_lesen.eof()) { dat_lesen.get(zeichen); str+=zeichen; } dat_lesen.close(); konto=atof(str.c_str()); //konto ist eine Double-Variable ofstream dat_schreiben; dat_schreiben.open(dateiname.c_str(), ios_base::out); if(!dat_schreiben) { cout <<"Die Datei Save.txt konnte nicht zum Schreiben geoeffnet werden"<<endl; fflush(stdin); getchar(); } konto+=punkte; dat_schreiben <<konto <<endl; dat_schreiben.close();
So und wenn jetzt das Programm weiterläuft und später nochmal die Datei so wie hier geöffnet werden soll, dann gehts net!
-
1. fflush(stdin) hat undefiniertes Verhalten.
2. Das:char zeichen;string str=""; while(zeichen!=' ' && !dat_lesen.eof()) { dat_lesen.get(zeichen); str+=zeichen; }
ist käse. Erstmal ist zeichen im ersten Durchlauf undefiniert. Dazu kommt, dass der Test auf eof gefolgt von einer ungeprüften Leseoperation keine gute Idee ist:
Siehe: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=eof#Answ