Guten Abend,
ich bekam von der Hochschule ein Übungsblatt mit mehreren Aufgaben. Bei einer stehe ich total auf dem Schlauch, diese beschäftigt sich mit stucts, pointer und ähnlichem. Für Wegweiser zur Lösung wäre ich sehr dankbar!
Vorgaben:
typedef struct _kunDB {
int num; // Kundennummer
char *name; // Kundenname
int plz; // Postleitzahl
char *ort; // Wohnort
} kunDB_t;
#define MAX 50 // maximal 50 Kunden
kunDB_t *feld[MAX]; // Feld von Pointern auf die Kundendaten [wurde von mir in "int main()" verlegt, der Rest ist außerhalb]
Aufgabe: Eine Funktion "eingeben()" zu implementieren, welche die Daten nach dem Einlesen (mittels scanf) speichert.
Meine Funktion "eingeben()":
//Aufruf mit "eingeben(n++, feld);"
void eingeben(int n, kunDB_t feld[]) { //n startet bei 0, wird vor jedem Aufruf um 1 erhöht
int num, plz;
char name[64], ort[64];
scanf("%d %s %d %s",&num,&name,&plz,&ort);
feld[n].num = num;
feld[n].name = name;
feld[n].plz = plz;
feld[n].ort = ort;
}
Alles anzeigen
Das Problem: Die nächste Aufgabe fordert eine Funktion für die Ausgabe der eingegeben Daten. Ich habe sie wie unten zu sehen ist implementiert, nur kommt es bei der Ausgabe zu Fehler [wie im Spoiler zu sehen ist].
void ausgeben(kunDB_t feld[]) {
for(int i = 0; feld[i].name != NULL; i++) { //solange durchlaufen, bis ein Feld.name "leer"/NULL ist.
printf("\nKundenzaehler.. %d\n",i);
printf("Kundenummer.... %d\n",feld[i].num);
printf("Name........... %s\n",feld[i].name);
printf("Postleitzahl... %d\n",feld[i].plz);
printf("Wohnort........ %s\n",feld[i].ort);
}
}
Konsole/Fehler:
Eingabe von einem Kunden: https://imgur.com/7sN29ov
Eingabe von zwei Kunden: https://imgur.com/RRTPnZ6
[GELB MARKIERT = Nutzereingabe]
Wodurch könnte dieser Fehler erzeugt werden? Ich vermute, dass ich irgendwo bei der Übergabe vom feld Fehler gemacht habe bzw. mit dem Pointer falsch umgehe.
Liebe Grüße
Cooper