Witam serdecznie wszystkich!
Proszę o pomoc w rozwiązaniu problemu :) Tworzę obiektowo e-dziennik w C++, którego jedną z funkcjonalności jest zapis utworzonej dynamicznie w programie listy uczniów (numerek, imię, nazwisko) do pliku .txt, aby później móc wczytać taką listę, taki dziennik, przy następnym uruchomieniu.
Obecnie utknąłem w momencie zapisu listy do pliku .txt. Dodam, że w całym programie (piszę go w strukturze pliku projektowego - podział na 3 pliki) raczej nie mam problemu z operowaniem na utworzonej dynamicznie liście uczniów (lista jednokierunkowa). Oto ciało mojej metody:
void Lista::zapisz_dziennik()
{
Uczen* temp=pierwszy;
if(temp)
{
char nazwa[2];
cout<<"Podaj nazwę klasy (np. 1B): ";
cin>>nazwa;
fstream plik;
plik.open(nazwa, ios::out);
while(temp->nastepny)
{
plik<<temp->nr<<" "<<temp->imie<<" "<<temp->nazwisko<<endl;
temp=temp->nastepny;
}
plik<<temp->nr<<" "<<temp->imie<<" "<<temp->nazwisko;
cout<<"Zapisuje dziennik klasy "<<nazwa;
Sleep(250);
cout<<".";
Sleep(250);
cout<<".";
Sleep(250);
cout<<".";
Sleep(250); //animacja
plik.close();
}
else
{
cerr<<"\aBłąd. Dziennik jest pusty!";
Sleep(2000);
}
}
Problem pojawia się jedynie przy zapisie danych do pliku .txt (analogiczny cout<<temp->nr<<" "... itd. działa bez problemu - napisałem nawet specjalną metodę bardzo zbliżoną do tej, do wyświetlania całej listy na oknie konsoli).
Przy wpisaniu chociaż jednego ucznia, zamiast zapisu w notatniku w stylu:
1 Jan Kowalski
otrzymuję
33556432 (adres w pamięci RAM?)
Pozdrawiam wszystkich serdecznie i liczę na pomoc :)
PS Od razu dodam, dołączyłem bibliotekę <fstream>!