Witam program miał czytać do listy z pliku .txt. Generalnie działa ale pierwszy wiersz okazuje się być śmieciem. Prawdopodobnie nie wypełniam pierwszego elementu listy tylko nie wiem gdzie jest błąd.
#define MAX 19
typedef struct
{
char imie[MAX];
char nazwisko[MAX];
int wiek;
} Osoba;
typedef struct elem
{
Osoba a;
struct elem *next;
} list_elem;
void addToList(char *imie, char *nazwisko, int wiek, list_elem *first)
{
while(first->next != NULL )
{
first = first->next;
}
list_elem *pom = malloc(sizeof(list_elem));
strcpy(pom->a.imie,imie);
strcpy(pom->a.nazwisko,nazwisko);
pom->a.wiek=wiek;
pom->next=NULL;
first->next=pom;
}
void printthis(list_elem *first)
{
while(first != NULL)
{
printf("%s %s %d\n",first->a.imie,first->a.nazwisko,first->a.wiek);
first=first->next;
}
}
void odczyt(char *path, Osoba przyklad)
{
FILE *fp;
fp = fopen(path, "r");
int n=0;
//first=malloc(sizeof(list_elem));
list_elem *first=malloc(sizeof(list_elem));
first->next=NULL;
while(fscanf(fp,"%s %s %d", przyklad.imie, przyklad.nazwisko, &przyklad.wiek) == 3)
{
addToList(przyklad.imie, przyklad.nazwisko, przyklad.wiek, first);
}
fclose(fp);
printthis(first);
}
int main()
{
Osoba przyklad;
odczyt("plik.txt", przyklad);
return 0;
}