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);
}