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.TelNrwenn 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 //ausgabeich will aber das er mir es so ausgibt :
Vorname: abc //eingabe
Nachname: def //eingabe
TelNr: 123 //eingabeVorname: 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?