Ĺadny brzuch
Chce zrobić coś takiego że mam liste dla klasy osoba, i chce sobie zapisać cała tą liste do pliki binarnego i potem ją odczytać.
Funkcje zapisujące:
void osoba::zapisz(char t[20]) { fstream os; os.open(t, ios::out | ios::binary | ios::app); os.write((char*)this,sizeof(osoba) + 2); os.close(); } void lista::zapisz() { node *tmp=inf.head; while(tmp!=NULL) { tmp->per.zapisz("save.bin"); tmp=tmp->next; } system("cls"); cout <<"Dane zostaly zapisane"; cin.ignore(); getchar(); }
Wczytające:
void lista::wczytaj() { system("cls"); fstream plik("save.bin"); char *dan=new char[1000]; for(int i=0;i<10;i++) { node *elem = new node; elem->per.wczytaj(plik); dodaj(elem); } cout <<"Dane zostaly wczytane"; cin.ignore(); getchar(); } void osoba::wczytaj(fstream &l) { l.read((char*)this,sizeof(osoba) + 2); }
Problem jest taki że jak widać wczytuje 10 rekordów, ale tylko pierwszy dobrze, nie wiem czemu... w pozostałych są tylko szczątki informacji.
Użytkownik migajek edytował ten post 19 maj 2007, 18:42
Powód edycji: codeboxy panie kolego
Ja miałem podobny problem w ANSI C. Może chodzi tu właśnie o "char*". Rzuć na to okiem: >> link <<
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Funkcje zapisujące:
void osoba::zapisz(char t[20]) { fstream os; os.open(t, ios::out | ios::binary | ios::app); os.write((char*)this,sizeof(osoba) + 2); os.close(); } void lista::zapisz() { node *tmp=inf.head; while(tmp!=NULL) { tmp->per.zapisz("save.bin"); tmp=tmp->next; } system("cls"); cout <<"Dane zostaly zapisane"; cin.ignore(); getchar(); }
Wczytające:
void lista::wczytaj() { system("cls"); fstream plik("save.bin"); char *dan=new char[1000]; for(int i=0;i<10;i++) { node *elem = new node; elem->per.wczytaj(plik); dodaj(elem); } cout <<"Dane zostaly wczytane"; cin.ignore(); getchar(); } void osoba::wczytaj(fstream &l) { l.read((char*)this,sizeof(osoba) + 2); }
Problem jest taki że jak widać wczytuje 10 rekordów, ale tylko pierwszy dobrze, nie wiem czemu... w pozostałych są tylko szczątki informacji.
Użytkownik migajek edytował ten post 19 maj 2007, 18:42
Powód edycji: codeboxy panie kolego
Ja miałem podobny problem w ANSI C. Może chodzi tu właśnie o "char*". Rzuć na to okiem: >> link <<