Hallo @all
ich habe ein Problem mit einem C-Programm. Ich möchte Daten, die ich einlese in einen Stapel speichern und ich finde meinen Fehler nicht. Es funktionierte alles wunderbar, als ich in der Struktur tStapelElem nur einen Integer und einen Zeiger auf sich selbst hatte. Jetzt habe ich 2 Zeiger in dieser Struktur und das Programm stürzt an der entsprechenden Stelle immer ab.
mein Quellcode:
//die strukturen
struct tKarte {
int zahl[4];
int drehung;
int typ;
};
struct tStapelElem {
struct tKarte* pKarte;
struct tStapelElem* pweiter;
};
//die funktionen
int einlesen(const char* File, struct tStapelElem* head) {
FILE* input_File;
if ((input_File = fopen(File, "r")) != NULL) {
int i;
struct tKarte buffer; //zwischenspeicher
for(i=0; i < GROESSE; i++) {
fscanf(input_File, "%d %d %d %d %d", &buffer.typ, &buffer.zahl[0], &buffer.zahl[1], &buffer.zahl[2], &buffer.zahl[3]);
//Stapel füllen
stapel_einfuegen(&(*head), &buffer);
}
fclose(input_File);
return 1;
}
else {
msg("Datei kann nicht geöffnet oder nicht gefunden werden");
return 0;
}
}
//Stapelverarbeitung
void stapel_einfuegen(struct tStapelElem *head, struct tKarte *buffer){
struct tStapelElem *pElem, *aktuell;
aktuell = head;
while (aktuell->pweiter->pweiter != NULL){
aktuell = aktuell->pweiter;
}
pElem = (struct tStapelElem*)malloc(sizeof(struct tStapelElem));
if(pElem != NULL){
int i;
pElem->pweiter = aktuell->pweiter;
aktuell->pweiter = pElem;
for(i=0; i<4; i++) {
//in den folgenden Zeilen muss der Fehler liegen
pElem->pKarte->zahl[i] = buffer->zahl[i];
}
pElem->pKarte->typ = buffer->typ;
}
}
Vielen Dank für Eure hilfe,
MfG,
Patrick