Lista jednokierunkowa z pliku.

0

Mam problem z wczytaniem listy jednokierunkowej z pliku. Mianowicie chodzi o to, że po wywołaniu funkcji wczytuje się tylko pierwszy element listy i dopiero po dwukrotnym wywołaniu funkcji ładuje się cała lista. Wiem mniej więcej dlaczego tak się dzieje, ale nie potrafię tak przebudować kodu, aby wszystko poprawnie działało. Da radę zrobić to za pomocą jednej funkcji?

Kod funkcji:

void DodajZPlikuZaw(const char nazwa_pliku[])
{
    FILE*plik=fopen(nazwa_pliku,"r");
    while(!feof(plik))
    {
        int i;
        druzyna *new,*tmp;
        new=(druzyna*)malloc(sizeof(druzyna));
        fscanf(plik,"%s",new->name);
        for(i=0;i<IluZaw;i++)
        {
            fscanf(plik,"%s %s",new->zawodnik[i].imie,new->zawodnik[i].nazwisko);
        }
        new->next=NULL;
        if(head==NULL)
        {
            head=new;
            return;
        }
        else
        {
            tmp=head;
            while(tmp->next!=NULL)
            {
                tmp=tmp->next;
            }
            tmp->next=new;
        }
    }
    fclose(plik);
}
0

Jaką wartość ma zmienna IluZaw?

PS żyjemy w erze terabajtowych dysków twardych za grosze, a Ty oszczędzasz parę bajtów na nazwie identyfikatora? LiczbaZawodnikow to za mało czytelna nazwa?

0
#define IluZaw 5 

Tak jakoś napisałem taką nazwę, a nie inną, ale to chyba bez znaczenia :)

1
            head=new;
            return;

Na przyszłość: z debuggerem wyszłoby to od razu ;-)

0

Dzięki wielkie :) dopiero uczę się programować i w sumie nie wiem dlaczego wpisałem tam tego "returna" :)

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