Umieszczenie danych z pliku do listy.

0

Mam taką oto listę która po uzupełnieniu zostaje zapisana do pliku:

typedef struct oso{
    char imie[30];
    char nazwisko[30];
    char prezent[50];
    float kwota;
    char kupno[1];
    float koszt;
    struct oso * next;
}osoby;

osoby * dodaj(osoby * wsk, osoby * aaa){
   float a=0;
    osoby * temp;
    if(!aaa){temp = malloc(sizeof(osoby));
    memset(temp, 0, sizeof(osoby));
    printf("Podaj imie: ");
    scanf("%s",&temp->imie);
       fflush(stdin);
    printf("\nPodaj nazwisko: ");
    scanf("%s",&temp->nazwisko);
       fflush(stdin);

    strcpy(temp->prezent,"N");
    printf("\nPodaj kwote jaka chce przeznaczyc na prezent: ");
    scanf("%f",&temp->kwota);
    fflush(stdin);

    strcpy(temp->kupno,"N");

    temp->koszt=a;

    fflush(stdin);
    }else{
        temp = aaa;
    temp->next = NULL;}
    if(!wsk){
        return temp;
    }
    else{
        osoby * poczatek = wsk;
        while(wsk->next)wsk=wsk->next;
        wsk->next=temp;
        return poczatek;
    }
}

void zapislisty1(osoby *wsk, char *nazwa)
{
    FILE *plik;

    if((plik=fopen(nazwa,"wb"))==NULL);
     {
        printf("blad otwarcia pliku");
    }
    while(wsk)
    {
        fwrite(wsk, sizeof(osoby)-sizeof(osoby *),1,plik);
        wsk=wsk->next;
    }
       if(fclose(plik)!=0)
       {
           printf("Blad zamkniecia pliku!");
       }
}

 

Chciałbym teraz napisać funkcję która na początku programu wczyta zawartość pliku do listy jednak kompletnie mi to nie wychodzi.
Czy może ktoś mi z tym pomóc ?
Przy okazji czy funkcja zapisu do pliku jest poprawnie napisana ? Bo mam co do niej wątpliwości jednak nie mogę sprawdzić ponieważ nie wiem jak napisać odczytywanie.

0

Może ta funkcja zapisu jest prawidłowa w swoim działaniu, ale to nie powinien być dla Ciebie jedyny wyznacznik. Warto umieć pisać kod, który będzie łatwy w utrzymaniu. jakieś odejmowanie rozmiarów...

Wczytujesz kolejno rekordy z pliku zapamiętując poprzedni element listy, w którym to będziesz ustawiał następnik na aktualny element listy.

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