ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
707
707
EMPFEHLEN
-
Hallo,
folgender Code verursacht bei mir ein kleines Durcheinander. Vielleicht kann mir einer das Erklären.
Der Funktion wird ein Stream FS übergeben. Dann wird die Datei files.dat geöffnet und Zeichen für Zeichen herausgeholt und in eine andere Datei gespeichert (mittel FS.put(c)), dass solange bis mein Trennzeichen ; kommt. Funktioniert alles super bis jetzt.
Wenn ich aber nun nach dem Trennzeichen etwas einfügen will, wird überhaupt nix in die Datei geschrieben.
Mit Kommentar (/* ... */): Die eine Datei wird in die andere geschrieben.
Ohne Kommentar: kompiliert zwar aber in der (FS) Datei steht gar nichts.
Für mich total unklar.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
void CFile::read_fileline(fstream &FS) { FILE* in; char c; char s[100]; in = fopen("files.dat", "r"); do{ c = fgetc(in); FS.put(c); cout << c; /* if (c == ';') { cout << " Bitte Text eingeben: "; cin >> s; do { int i=0; c = s[i++]; FS.put(c); }while(c = '\0'); } */ }while (c != EOF); FS.close(); }
Vielen Dank schon mal
mfg Christian
Mit nichts ist man freigiebiger als mit Ratschlägen
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
void CFile::read_fileline(fstream &FS) { FILE* in; char c; char s[100]; in = fopen("files.dat", "r"); do{ c = fgetc(in); FS.put(c); cout << c; /* if (c == ';') { int i=0; char k; cout << " Bitte Album eingeben: "; cin >> s; do { k = s[i++]; //FS.put(k); FS >> k; }while(k != '\0'); } */ }while (c != EOF);
Da war noch ein Fehler in der Schleife aber ansonsten gehts trotzdem nicht. Die Ausgabe auf den Bildschirm passiert auch erst sehr verspätet.
hat das irgendwas mit der Pufferung zu tun.
Versteh ich alles nicht...
PLEASE HELP ME...Geändert von sisela (21.01.04 um 23:09 Uhr)
-
Manchmal lösen sich Probleme von selbst.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
void CFile::read_fileline(fstream &FS) { FILE* in; char c; in = fopen("files.dat", "r"); do{ c = fgetc(in); FS << c; FS.flush(); cout << c; if (c == ';') { cout << " Bitte Text eingeben: "; cin >> s; FS << s; } }while (c != EOF); }
Ein einfache FS.flush() hats gebracht.
Falls mir aber einer Erklären kann warum, das mit dem Puffer so ist wie es ist, wäre ich dankbar.
Stille ist der Zustand der eintreten würde, wenn die Menschen nur noch von Dingen sprächen, von denen sie etwas verstehen.
-
29.01.04 18:23 #4
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
Was mir noch zu deinem Code einfiel: Warum verwendest du neben der C++-Standardfilestreams auch noch die guten alten C-Filefunktionen wie fopen()? Ist so eine komische Mischung...
-
29.01.04 19:28 #5
- Registriert seit
- Aug 2001
- Beiträge
- 1.411
Ja das solltest Du wirklich lassen, dafür gibts doch einen Input- und einen Output-Stream
Ähnliche Themen
-
fstream einbinden
Von besy im Forum C/C++Antworten: 10Letzter Beitrag: 28.07.10, 14:37 -
[c++] Dateien mit fstream kopieren?
Von darrell im Forum C/C++Antworten: 2Letzter Beitrag: 17.11.07, 22:47 -
[c++] fstream-Handle übergeben
Von ktm_frans im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 26.06.07, 08:52 -
probleme mit fstream funk. open(dateiname);
Von FaNo86 im Forum C/C++Antworten: 2Letzter Beitrag: 18.04.07, 19:19 -
Getline bei FSTREAM wie bei Cin ?
Von G-Mein im Forum C/C++Antworten: 1Letzter Beitrag: 04.06.04, 15:41





Zitieren
Login






