witam
jestem świeży w sprawach programowania, a muszę napisać projekt i mam problem ponieważ muszę użyć list jednokierunkowych, napisałem program bez tego i działał dobrze, ale chciałem go zmienić i podczas wczytywania program wyświetla

klej 2 2.00
tapeta 2 3CALA.30ATA=C:\Us,╗0_Ě@ ilosc: 1093677870 cena: 12.77

wydaje mi się że zły warunek w while stawiam, ale próbowałem na kilka sposobów i bez poprawy.
a i chcialbym zeby to sie tak wyswietlalo produkt: szpinak ilosc: 2 cena: 2.00
dzieki

void odczytaj(zakupt **poczatek){
 FILE *plik;
 char c;
  zakupt *nowe=(zakupt *)malloc(sizeof(zakupt));
   plik=fopen("C:\\Users\\xxx\\Desktop\\1.txt","r");
    while (EOF != (c = fgetc(plik)))
  {

      fread(nowe->nazwa, sizeof(nowe->nazwa),1,plik);
      fread(&nowe->ilosc, sizeof(nowe->ilosc),1,plik);
     fread(&nowe->cena, sizeof(nowe->cena),1,plik);
    printf("produkt: %s ilosc: %d cena: %.2f\n", nowe->nazwa, nowe->ilosc, nowe->cena);
  }
    fclose(plik);
}