Witam, mam taki kawałek kodu:
typedef struct lista
{ int id_klienta;
char *imie_nazwisko;
struct lista *nast_klient;
int ilosc; //ilosc rachunkow
float *TAB_rachunki[];
}klient;
dla struktury oraz kod własciwy:
void lista_f()
{
int i = 0;
int z,y;//zmienne pomocnicze,obsluga petli
char x[10];
klient* pierwszy;
while(1)
{
if(feof(lista_klientow) == 0)
{
if(i == 0)
{
glowa = malloc(sizeof(klient));
pierwszy=glowa;
}
else{
glowa->nast_klient = malloc(sizeof(klient));
glowa = glowa->nast_klient;
}
fscanf(lista_klientow,"%i %s %i",&z,x,&y);
glowa->id_klienta=z; glowa->imie_nazwisko=x; glowa->ilosc=y;
printf("%i %s %i\n",glowa->id_klienta,glowa->imie_nazwisko,glowa->ilosc);
i++;
}
else {glowa->nast_klient=NULL;glowa=pierwszy;break;}
}
printf("Liczba wczytanych klientow: %d\n",i);
while(1){
printf("%i %s %i\n",glowa->id_klienta,glowa->imie_nazwisko,glowa->ilosc);
if(glowa->nast_klient == NULL){
glowa=pierwszy;
break;
} else{
glowa = glowa->nast_klient;
}
}
};
(otwarcie pliku,zamkniecie itp mam w innym fragmencie,otwiera zaraz przed wywolaniem funkcji lista_f();, a zamyka zaraz po tym)
W pliku dane powypisywane sa w ten sposob: 1 nazwisko1 1 2 nazwisko2 2 3 nazwisko3 3
Wyglada na to, ze wczytuje dobrze, bo po pierwszym wypisaniu(zaraz po pobraniu wartosci) sa one prawidlowe. Gorzej z wypisaniem na koncu funkcji.
Problem z tym jest nastepujacy: funkcja jakimś cudem wczytuje do kazdego pola imie_nazwisko w każdym elemencie listy OSTATNIE w pliku imie_nazwisko(nie mam pojecia jak, bo cyfry tj. id_klienta i ilosc trzyma poprawnie).Wygląda to tak:
1 nazwisko3 1
2 nazwisko3 2
3 nazwisko3 3
Co jeszcze dziwniejsze(no,przynajmniej dla mnie), pierwszy rownież się zmienia, chociaz powinien trzymać wartosc pierwszego wczytanego klienta, bo przeciez przypisuje do niego glowę tylko raz, przy pierwszym obiegu pętli.
Niestety sam nie umiem znaleźć błędu, dlatego proszę o pomoc.
@Edit- Przy zrobieniu
fscanf(lista_klientow,"%i %s %i",& glowa->id_klienta,glowa->imie_nazwisko,&glowa->ilosc);
program wywala się po wczytaniu 1 klienta. Jesli ktoś umiałby pomoć byłbym bardzo wdzieczny :)