iostream



  • using namespace std; 
    // Einen Person-Datensatz definieren 
    struct PERSON 
    { 
        char VorName[20]; 
        char NachName[20]; 
        int TelNr; 
    }; 
    
    // fstream damit die Datei zuerst schreibend und dann lesend geöffnet werden kann. 
    fstream File("Person.dat", ios::out|ios::binary); 
    if (File.is_open()) 
    { 
        // Nur zwei Datensätze schreiben. 
        // Hier wäre eine Fehlerprüfung angebracht 
        for (int i = 0; i < 2 ; ++i) 
        { 
            PERSON Pers; 
            cout << "Vorname: "; 
            cin >> Pers.VorName; 
            cout << "Nachname: "; 
            cin >> Pers.NachName; 
            cout << "TelNr: "; 
            cin >> Pers.TelNr; 
    
            // Aktuelle Person in der Datei speichern. 
            File.write((const char*)&Pers, sizeof(Pers)); 
        } 
        File.close();   // Datei schließen 
    } 
    // Datei zum Lesen öffnen. 
    File.open("Person.dat", ios::in|ios::binary); 
    if (File.is_open()) 
    { 
        PERSON Pers; 
        while (File.read((char*)&Pers, sizeof(Pers))) 
            cout << Pers.VorName << " " << Pers.NachName << " " << Pers.TelNr << endl; 
    }
    

    hier ist ein code ausm faq.

    Was muss ich machen damit es hier :

    File.open("Person.dat", ios::in|ios::binary); 
    if (File.is_open()) 
    { 
        PERSON Pers; 
        while (File.read((char*)&Pers, sizeof(Pers))) 
            cout << Pers.VorName << " " << Pers.NachName << " " << Pers.TelNr << endl; 
    }
    

    z.b. nicht abc def 123 steht
    sondern
    Vorname: //Pers.VorName
    Nachname: //Pers.NachName
    TelNr: //Pers.TelNr

    wenn ich das ganze ca so schreibe

    cout << "Vorname: " << Pers.VorName endl;
    cout << "Nachname: "<< Pers.NachName endl;
    cout << "TelNr: "<< Pers.TelNr endl;
    

    gehts nicht.

    Könnt ihr mir bitte helfen ?



  • Was heißt es geht nicht? Dir fehlt da ein <<-Operator vor dem endl. Aber ansonsten..

    cout << "Vorname: " << pers.vorname << endl;
    usw.



  • bei mir kommt immernoch

    abc def 123 raus



  • Kann eigentlich nicht sein, zeig mal den genauen Code zum Ausgeben.



  • ich weiß gerade nicht was du meinst aber hier ist der ganze code

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    struct Person
    {
    	char Vorname[12];
    	char Nachname[20];
    	int TelNr;
    };
    
    int main ( int argc, char **argv )
    {
    
    	fstream File("person2.bat", ios::out|ios::binary);
    
    	if(File.is_open())
    	{
    		Person Pers;
    		cout << "Vorname: ";
    		cin >> Pers.Vorname;
    		cout << "Nachname: ";
    		cin >> Pers.Nachname;
    		cout << "Telefonnummer";
    		cin >> Pers.TelNr;
    
    		File.write((const char*)&Pers, sizeof(Pers))
    	}
    
    	File.open("person2.bat", ios::in|ios::binary);
    	if(File.is_open())
    	{
    		while(File.read((char*)&Pers,sizeof(Pers)))
    		{
    		cout << "Vorname: " << Pers.VorName << endl;
    		cout << "Nachname: "<< Pers.NachName << endl;
    		cout << "TelNr: "<< Pers.TelNr << endl;
    		}
    	}
    	return 0;
    }
    


  • Wenn du schon das ganze Programm postest, hättest du es nicht compilierbar machen können?

    Wenn dein Problem jetzt darin liegt, dass keine Ausgabe erscheint, dann weil die Datei vor'm erneuten Öffnen erst schließen musst.

    Geht mit File.close();



  • mh es ging auch ohne file.close();

    also so siehts aus

    Vorname: abc //eingabe
    Nachname: def //eingabe
    TelNr: 123 //eingabe
    abc def 123 //ausgabe

    ich will aber das er mir es so ausgibt :

    Vorname: abc //eingabe
    Nachname: def //eingabe
    TelNr: 123 //eingabe

    Vorname: abc //ausgabe
    Nachname: def //ausgabe
    TelNr: 123 //ausgabe



  • Also wenn dein Code dort compilierbar gemacht wird, du das File.close() einfügst, dann tut's genau das. Habs doch ausprobiert.



  • omg erschiess mich ....

    habe bei int main die '}' vergessen und darum gings auch ohne probleme.
    der nächste fehler war das ich person pers in einem bereich gemacht und der gilt ja nicht in dem weiter außerliegenden bereich....

    najut scheisse geschrieben ....

    Danke für die hilfe



  • nu gehts weiter ^^
    erstmal will ich sry sagen.

    Folgendes problem:
    Ich gebe was ein Name,Nachname,Wohnort,Strasse,Bday,TelNr usw... ein
    Wenn das porgramm geschlossen wird kann ich die alten daten nicht rauslesen. Frage: Warum?

    nächste frage:
    Wie kann ich dann ein Eintrag(struct) nach bedarf löschen?


Anmelden zum Antworten