Da ich länger nichts mehr mit C gemacht hab, und meine Kenntnisse wohl doch einige neue Löcher aufweisen bekomm ich immer einen Speicherzugriffsfehler(an der markierten stelle tritt es auf). Es wär schön wenn einer meinen fehler sieht und mich aufklären könnte.
#include
Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge
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