datei öffnen, speichern



  • servus hab n kleines problem
    muss ein telefonbuch speichern und öffnen können.
    da ich aber n noob auf dem bereich bin, bräuchte ich mal hilfe.

    #include <iostream.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <fstream.h>
    #define MAX 50
    
    //using namespace std;
    
    int i;
    int y;
    char x;	
    char ende;
    //char outfl;
    
    struct adres{
    
    		char nachname[MAX];
    		char vorname[MAX];
    		char strasse[MAX];
    		char hausnummer[6];
    		char PLZ[6];
    		char wohnort[MAX];
    		char geschlecht[MAX];
    		char geburtsdatum[11];
    		char geburtsort[MAX];
    		char nationalitaet[MAX];
    		char beruf[MAX];
    }adressen;
    
    void ausgabe(struct adres x)
    {
    	cout<<"\n\n\n sie gaben ein:\n"<<endl;
    	cout<<"nachname.......:"<<x.nachname<<endl;
    	cout<<"vorname........:"<<x.vorname<<endl;
    	cout<<"strasse........:"<<x.strasse<<endl;
    	cout<<"hausnummer.....:"<<x.hausnummer<<endl;
    	cout<<"PLZ............:"<<x.PLZ<<endl;
    	cout<<"wohnort........:"<<x.wohnort<<endl;
    	cout<<"geschlecht.....:"<<x.geschlecht<<endl;
    	cout<<"geburtsdatum...:"<<x.geburtsdatum<<endl;
    	cout<<"geburtsort.....:"<<x.geburtsort<<endl;
    	cout<<"nationalitaet..:"<<x.nationalitaet<<endl;
    	cout<<"beruf..........:"<<x.beruf<<endl;
    }
    
    int main()
    {
    
    	int auswahl;
    
    	do{
    
    	cout<<"\nwahlen sie die option\n";
    	cout<<"1.neue eingabe\n";
    	cout<<"2.datei offnen\n";
    	cout<<"3.datei speichern\n\n";
    	cin>>auswahl;
    
    	switch(auswahl)
    	{
    	case 1:
    
    	cout<<"nachname       :" ;
    	cin>>adressen.nachname, MAX;
    	cout<<"vorname        :" ;
    	cin>>adressen.vorname, MAX;
    	cout<<"strasse        :";
    	cin>>adressen.strasse, MAX;
    	cout<<"hausnummer     :";
    	cin>>adressen.hausnummer;
    	cout<<"PLZ            :" ;	
    	cin>>adressen.PLZ;
    	cout<<"wohnort        :";
    	cin>>adressen.wohnort, MAX;
    	cout<<"geschlecht     :";
    	cin>>adressen.geschlecht, MAX;
    	cout<<"geburtsdatum   :";
    	cin>>adressen.geburtsdatum, MAX;
    	cout<<"geburtsort     :";
    	cin>>adressen.geburtsort, MAX;
    	cout<<"nationalitaet  :";
    	cin>>adressen.nationalitaet, MAX;
    	cout<<"beruf          :";
    	cin>>adressen.beruf, MAX;
    
      ausgabe(adressen);
    
      break;
    
    	case 2:
    	//	cout<<"funktion noch nicht fertiggestellt\n";
    		ofstream outfl("ausgabe.dat", ios::out);
    		if(outfl==NULL)
    		{
    			cerr<<"\ndatei konnte net geoffnet werden";
    			exit(1);
    		}
    		cout<<ausgabe<<endl;
    	/*	ifstream file("input.dat");
    		if(file==0)
    		{
    			cerr<<"\nDatei konnte net geoffnet werden";
    			exit(1);
    		}*/
    		break;
    	case 3:
    	//	cout<<"funktion noch nicht fertiggestellt\n";
    	//	ifstream infl("eingabe.dat", ios::in);
    		break;
    	default:cout<<"bitte zwischen 1 und 3 waehlen \n";
    	}
    
      cout<<"beenden? (j/n)";
      cin>>x;
    
    }
    while(x!='j');
    
    return 0;
    }
    

    müsste das ganze irgendwie mit hilfe von ifstream und ofstream machen!



  • Morgen,

    schau dir mal folgenden FAQ-Beitrag von Hume an:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html

    mfg
    v R



  • servus
    realisticer danke für die schnelle antwort, sobald ich zuhaus bin werd ich es auf jeden fall ausprobieren 🙂

    nebenbei noch erwähnt, wie kann ich z.b mehrere daten verwalten, dass heisst wenn ich z.b daten von 2 personen eingeb und danach diese beiden eingaben dann auf dem bildschirm bekomm?



  • Tag,

    dazu kannst du dir std::vector<> anschauen. Damit kannst du mehrere Adressen
    speichern:

    http://www.sgi.com/tech/stl/Vector.html

    mfg
    v R



  • hab jetzt folgendes

    D:\c++\1\structuren.cpp(124) : error C2360: Initialisierung von 'File' durch 'case'-Marke übersprungen
    D:\c++\1\structuren.cpp(80) : Siehe Deklaration von 'File'
    D:\c++\1\structuren.cpp(140) : error C2360: Initialisierung von 'outfl' durch 'case'-Marke übersprungen
    D:\c++\1\structuren.cpp(126) : Siehe Deklaration von 'outfl'
    D:\c++\1\structuren.cpp(140) : error C2360: Initialisierung von 'File' durch 'case'-Marke übersprungen
    D:\c++\1\structuren.cpp(80) : Siehe Deklaration von 'File'
    D:\c++\1\structuren.cpp(144) : error C2361: Initialisierung von 'outfl' durch 'default'-Marke übersprungen
    D:\c++\1\structuren.cpp(126) : Siehe Deklaration von 'outfl'
    D:\c++\1\structuren.cpp(144) : error C2361: Initialisierung von 'File' durch 'default'-Marke übersprungen
    D:\c++\1\structuren.cpp(80) : Siehe Deklaration von 'File'
    Fehler beim Ausführen von cl.exe.

    structuren.obj - 5 Fehler, 0 Warnung(en)

    hee???



  • Wenn du Variablen in einer Case-Anweisung erstellst, dann musst du einen neuen
    Block oeffnen:

    switch(cond) {
        case cond_1: {
           int x(0);
        }
        break;
    }
    

    mfg
    v R



  • hi, ich weiß nich, ob du das prob schon gelöst hast, wenn ja is toll, wenn nein dann kann dir das ja vielleicht weiterhelfen:

    #include <fstream>
    
    void speichern(CHARA s)
    {
    	ofstream speicher ("save.sav", ios::binary);
    	if(speicher==NULL)
    	{
    	 	// cout << "Ungueltig" << endl;
    		return;
    	}
    
    	speicher.write ((char*) &s, sizeof(s));
    
    	speicher.close();
    }
    
    void laden(CHARA &s)
    {
     	ifstream speicher ("save.sav", ios::binary);
     	if(speicher==NULL)
     	{
    	  	// cout << "Ungueltig" << endl;
    		return;
    	}
    
    	speicher.read ((char*) &s, sizeof(s));
    
    	speicher.close();			   
    }
    

    CHARA ist ne Klasse, die ich speicher, beim laden brauch man natürlich ne referenz.



  • hab ich das jetzt richtig verstanden, dass ich unter case 2: laden();
    und unter case 3: speichern();
    schreiben soll, dann wird auf die funktionen automatisch zugegriffen.

    nun ich bekomm jetzt aber den folgenden fehler

    Kompilierung läuft...
    structuren.cpp
    D:\c++\1\structuren.cpp(28) : error C2027: Verwendung des undefinierten Typs "CHARA"
    D:\c++\1\structuren.cpp(19) : Siehe Deklaration von 'CHARA'
    D:\c++\1\structuren.cpp(43) : error C2027: Verwendung des undefinierten Typs "CHARA"
    D:\c++\1\structuren.cpp(19) : Siehe Deklaration von 'CHARA'
    D:\c++\1\structuren.cpp(151) : error C2660: 'laden' : Funktion akzeptiert keine 0 Parameter
    D:\c++\1\structuren.cpp(156) : error C2660: 'speichern' : Funktion akzeptiert keine 0 Parameter
    Fehler beim Ausführen von cl.exe.

    structuren.obj - 4 Fehler, 0 Warnung(en)


Anmelden zum Antworten