Witam. Próbuje napisać krótki program, w którym użytkownik będzie mógł stworzyć listę studentów. Mój problem polega na tym, że jeśli chcę, aby pierwszy element listy dodawał się poza funkcją main, w funkcji
dodaj_studenta(*head)
, program nie działa. O to fragment kodu:
typedef struct student
{
char imie[20];
char nazwisko[30];
int nr_indeksu;
struct student *next;
}student;
void dodaj_studenta(student *head)
{
student *wsk=head, *nowy;
if(wsk!=NULL) // ten fragment programu dziala prawidlowo(program dodaje tu kolejnych studentow)
{
while(wsk->next!=NULL)
{
wsk=wsk->next;
}
nowy=(student*)malloc(sizeof(student));
printf("Podaj kolejno imie, nazwisko oraz indeks studenta\n");
scanf("%s", &nowy->imie);
scanf("%s", &nowy->nazwisko);
scanf("%d", &nowy->nr_indeksu);
wsk->next=nowy;
nowy->next=NULL;
}
else // Ten fragment programu NIE dziala prawidlowo (program ma tu wejsc jesli lista jest pusta i wpisac pierwszego studenta)
{
wsk=(student*)malloc(sizeof(student));
printf("Podaj imie studenta ");
scanf("%s", &wsk->imie);
printf("Podaj nazwisko studenta ");
scanf("%s", &wsk->nazwisko);
printf("Podaj numer indeksu studenta ");
scanf("%d", &wsk->nr_indeksu);
wsk->next=NULL;
}
}
int main()
{
student *head=NULL;
dodaj_studenta(head);
return 0;
}
Program wchodzi do opcji ELSE w funkcji dodaj_studenta, natomiast nie zapisuje go w liście. Jak mozna to naprawic?