Problem jest nastepujacy:
Mam do zrobienia programik w czystym C, narzucone pewne warunki tzn prosta ksiazka telefoniczna na listach niestety :)
Jest plik np. txt w ktorym zapisane sa dane postaci:
Imie|Nazwisko|telefon|adres|miejscowosc
Po pierwsze program wczytuje dane z pliku uzywajac funkcji fgets i strtok i tworzy liste dynamiczna za chwile przedstawie kod , i tu pojawia sie problem
Moj kod wyglada tak:
Zadeklarowana jest struktura:
struct elem {
char *imie;
char *nazwisko;
char *tel;
char *adres;
char *miejscowosc;
struct elem *nast;
struct elem *poprz;
};
Nastepnie tworzenie listy:
struct elem * glowa = NULL ;
struct elem *p ;
char wiersz[100];
if ( (wej = fopen("test.txt","r")) == NULL )
printf("Blad otwarcia pliku");
while(!feof(wej))
{
fgets(wiersz,300,wej);
p = (struct elem *)malloc(sizeof(struct elem));
p->imie = strtok(wiersz,"|");
p->nazwisko = strtok(NULL,"|");
p->tel = strtok(NULL,"|");
p->adres = strtok(NULL,"|");
p->miejscowosc = strtok(NULL,"|");
printf("%s " ,p->imie);
printf("%s ",p->nazwisko);
printf("%s ",p->tel);
printf("%s ",p->adres);
printf("%s",p->miejscowosc);
p->nast = glowa;
glowa = p;
}
for (p=glowa;p;p=p->nast)
printf("\n%s" ,p->imie);
wszystkie printf-y z petli while wypisuja prawidlowe wartosci, natomiast petla for powinna wypisac wszystkie imiona natomiast wypisywane jest tylko ostatnie imie tyle razy ile jest elementow w liscie .
Pytanie: co jest zle w kodzie?
wszystko dziala dobrze przy zalozeniu ze elementami struktury sa int-ygery natomiast z charami jest problem , wyglada to tak jakby petle for nie szla po calej liscie tylko stala w miejscu macie moze jakis pomysl ?
pozdrowka
Glina