Datei lässt sich beim zweiten Mal nicht mehr öffnen
-
Nachdem ich die Datei das erste Mal geöffnet habe, lässt sie sich nach dem schließen nicht nochmal öffnen. Hab ich irgendeinen Fehler gemacht ?
#include "Person.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;int main()
{
fstream out, in;
ios::openmode mode2 = ios::in | ios::out | ios::trunc | ios::binary;
ios::openmode mode = ios::in | ios::out | ios::app | ios::binary;
int wahl;
int anz = 0;Person Anstalt[5];
out.open("hahn5",mode);
if( !out) {cout << "schon hier nicht" << endl;}
for(int i = 0; ; ++i)
{
out.read((char*)&Anstalt[i], sizeof (Person));
out.seekg(sizeof (Person), ios::cur);
++anz;
if( out.eof())
break;
}
out.close();out.open("hahn5",mode);
if( !out) {cout << "schon hier nicht2" << endl;}
out.close();
-
Ja dieser Fehler ist nicht so einfach auf Anhieb zu begreifen

Dein Stream ist in einem ungültigen Zustand (nach dem eof) und dieses Flag bleibt auch nach dem Schließen (und Neuöffnen) so.
Zum Löschen der Flags dann einfach zusätzlich noch "clear()" aufrufen:out.close(); out.clear(); out.open("hahn5",mode);Oder aber einen neuen Stream anlegen:
fstream out2("...", mode);Du solltest übrigens auch deine ersten Stream erst dann konstruieren, wenn du ihn brauchst (wir sind hier nicht bei C, wo man zuerst alle Variablen deklarieren muß!).
-
Th69 schrieb:
Du solltest übrigens auch deine ersten Stream erst dann konstruieren, wenn du ihn brauchst (wir sind hier nicht bei C, wo man zuerst alle Variablen deklarieren muß!).
Macht man auch dort nicht. Zumindestens nicht beim C99.
-
Danke für die schnelle Hilfe
