Odczytywanie z pliku

0

Witam. Mam problem z moją mini bazą danych. Funkcja odczytująca z pliku dane nie chce mi ich wprowadzać do tablicy.
Był bym wdzięczny za pomoc

#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <conio.h>       
//#include <cstdio>        
using namespace std;
void odczyt_z_pliku();
void zapis_do_pliku();
class dane
{
    public:
    char imie[20],nazwisko[20];
    int wiek;

    public:
    void zapisywanie(char *first, char *last, int lat);
    void odczyt()
    {
        cout<<imie<<" "<<nazwisko<<", lat: "<<wiek<<endl;
    }
};
dane osoby[100];
////////////////////////////////////////////////////////
int main()
{

    char wybor;
    odczyt_z_pliku();
    int a=0;
    do
    {

        system("cls");
        cout<<"\t\tBAZA DANYCH OSOB";
        cout<<"\n1.Odczyt\n2.Zapis\n3.Koniec\n";
        wybor=getch();
        switch(wybor)
        {
            case '1': for(int i=0;i<a;i++) osoby[i].odczyt();
                    system("pause");
                    break;
            case '2':
                        cout<<"\n\nPodaj Imie: ";
                        char imie[20];
                        cin>>imie;
                        cout<<"\nPodaj Nazwisko: ";
                        char nazwisko[20];
                        cin>>nazwisko;
                        cout<<"\nPodaj wiek: ";
                        int wiek;
                        cin>>wiek;
                        osoby[a].zapisywanie(imie,nazwisko,wiek);
                        a++;
                        break;
            default: wybor=27;
        }
    }while(wybor!=27);
    zapis_do_pliku();
}
////////////////////////////////////////////////////////
void dane::zapisywanie(char *first, char *last, int lat)
{
    strcpy(imie,first);
    strcpy(nazwisko,last);
    wiek=lat;
}
///////////////////////////////////////////////////////
void zapis_do_pliku()
{

int i;
std::fstream plik;
//otwarcie pliku do zapisu
//ios::app ustawienie wskaznika na koncu pliku, ios::out mozliwosc zapisu pliku
plik.open("baza.txt", ios::out|ios::app);

//wpisanie danych z bazy do pliku
for (i = 0; i < 100; i++) {
    if(!(osoby[i].wiek)) break;
plik << osoby[i].imie << endl;
plik << osoby[i].nazwisko << endl;
plik << osoby[i].wiek << endl;
plik << endl;
}
//zamkniecie pliku
plik.close();
}
////////////////////////////////////////////////////////
void odczyt_z_pliku()
{
    std::fstream plik;
    plik.open("baza.txt", ios::in);
    if(plik.good()==true)
    {
        int i=0;
      while(!plik.eof())
      {
    //  if(!(osoby[i].wiek)) break;
           plik >> osoby[i].imie;// >> endl;
           plik >> osoby[i].nazwisko;// >> endl ;
           plik >> osoby[i].wiek;// >> endl;

           i++;
      }
      plik.close();
    }
}
1

zmień te a=0 na początku.

1

Jak już zapiszesz coś do bazy i zamkniesz program, przy ponownym uruchomieniu ta Twoja zmienna a = 0, i dlatego nic się nie odczytuje. Wrzucaj na początek pliku tę zmienną i z niej czytaj ilość osób do odczytu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1