wczytywanie elementów z pliku do listy jednokierunkowej

0

Mam problem z kodem. Próbuję napisać funkcję która wpisuje elementy z pliku do listy jednkokierunkwej. Z tego co zauważyłem to nie tworzą się nowe węzły, a jedynie elementy w tych węzłach podmieniają się. Sprawdzałem to tak, że wypisywałem adres dla każdego eleentu węzła i każdy z tych adresów był taki sam, a chyba nie powinien. Ktoś mógłby spojrzeć?

void makeList(FILE *f1, struct samochod **head){
  
  f1=fopen("file.txt", "r");
  struct samochod *newsamochod, *temp;
  newsamochod=(struct samochod*)malloc(sizeof(struct samochod));
  printf("newsamochod %p\n", newsamochod);
  while(fscanf(f1, "%s %s %d %d %s %s %s %d", newsamochod->marka, newsamochod->model, &newsamochod->rokProdukcji, &newsamochod->pojemnoscSilnika, newsamochod->wersjaNadwozia, newsamochod->wersjaWyposazenia, newsamochod->VIN, &newsamochod->cena)!=EOF){   
     newsamochod->next=*head;
     *head=newsamochod;
   
  }
}```
0

Raz alokujesz pamięć na node'a a potem, w pętli, wielokrotnie wczytujesz dane do tego elementu. Powinieneś wrzucić kolejną alokację do środka pętli.

0

a wiesz jak to zrobić? bo jak ja robiłem to miałem małe problemy bo jak wczytujesz to juz masz pewien typ listy

0
The_Bialy napisał(a):

... bo jak wczytujesz to juz masz pewien typ listy

?
Albo nie rozumiem albo starasz się rozwiązać inny problem.
Na początek powpisuj dane do różnych elementów listy.

0

Zacznij od jednej prostej rzeczy - wydziel funkcjonalność pobrania jednego elementu z pliku do osobnej funkcji. Ta funkcja nie powinna nic wiedzieć o pozostałych elementach listy.

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