Neue elemente in liste dürfen keine stackvariablen sein. Statt
struct Student aktu;
muss es
struct Student *aktu;
aktu=(struct Student *)malloc(sizeof(struct Student));
/*hier eigentlich noch eine fehlerbehandlung für den fall aktu==NULL*/
heißen (für malloc() und co. ist u.u. ein extra #include<malloc.h> bzw. #include<stdlib.h>erforderlich). Damit wird zudem aus
actu.???
jeweils
actu->???
Zudem hätte es statt
scanf("%d", aktu.matrikel);
auch
scanf("%d", &aktu.matrikel);
heißen müssen, denn bei scanf wird die adresse der variablen angegeben. In der malloc-version wird es also zu
scanf("%d", &aktu->matrikel);
Durch das allozieren mit malloc() wird es nötig, nach gebrauch die einzelnen elemente wieder freizugeben (z.b. in main())
for (i=0;i<ANZ;i++)
{
struct list *kill;
if((kill=liste.start)==NULL)/*zuweisen und ende wenn liste zu früh leer*/
break;
liste.start=liste.start->next;/*erstes element heraustrennen*/
free(kill);/*herausgetrenntes element freigeben*/
};
mr.escape