Witam mam dwa problemy z moim kodem, chciałem napisać program składający się z tablicy 4 elementowej, każdym elementem jest lista jedno kierunkowa.
Funkcja utwórz wczytuje z pliku dane i przekazuje je do funkcji dodaj która powinna dodać na początek listy dla danej komórki. W praktyce zapełnia komórki tylko najnowszymi danymi na przykład wczytuje dla first[0] i first[1] to we wszystkich komórkach jest to co w first[1]. Kolejka raczej działa problem jest chyba z wywoływaniem funkcji.
struct film {
int sala;
char tytul;
char godz[20];
float cena;
char miejsca[10];
struct film *next;
};
void dodaj(struct film **first,struct film *temp)
{
FILE *plik;
char s[255];
struct film *p;
//p=(*first);
p=(struct film *)malloc(sizeof(film));
*p=*temp;
p->next=*first;
*first= p;
}
void utworz(struct film **first)
{
FILE *plik;
struct film p;
char wiersz[255];
int i=0;
if ((plik=fopen("lista.txt","r"))==NULL) // próba otwarcia pliku
printf ("Blad danych");
else {
while( fgets(wiersz, sizeof(wiersz), plik)!=NULL )
{
printf("Sala %d, ",p.sala =atof(strtok(wiersz, ", ")));
printf("cena %f, ", p.cena =atoi(strtok(NULL, ", ")));
printf("godzina %s, ", p.godz =strtok(NULL, ", "));
printf("tytul %s, \n", p.tytul =strtok(NULL, ", "));
i++;
dodaj(&(first[p.sala]),&p);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int i=0;
int liczba_filmow=10;
int liczna_sal=4;
struct film *first[4];
char menu='y';
int wybor;
utworz(first);
return 0;
}