struct array
-
Hi,
ich habe eine Frage zu folgendem Code.
und zwar habe ich wahrscheinlich in den unterstrichenen einträgen hier im Code einen Fehler gemacht. Kann mir jmd helfen und sagen was hier falsch ist?ich habe nun eine Funktion die abhängig von dem Feld ist, was übergeben wird(struct eintrag[]) und der Größe des Feldes.
(Ich meine die Größe des Feldes könnte ich hier nicht mehr seperat abrufen.)void telmalen([b][u]struct eintrag[][/u][/b], int n) { for (int i=0; i<n; i++) printf ("\n%i. %c", i, [b][u]struct eintrag[i][/u][/b]); }
dann deklariere ich in der main das array telefonliste[].
weiter rufe ich die definierte Funktion auf, und übergebe mein Feld und dessen Länge.int main(void) { struct eintrag { char vorname[15]; char name[40]; char telnr[15]; }; struct eintrag telefonliste[10]; telmalen([b][u]telefonliste[][/u][/b], sizeof(telefonliste)) }
-
Ich habe mal den Code etwas umgeschrieben, so dass er kompiliert:
#include <stdio.h> struct eintrag { char vorname[15]; char name[40]; char telnr[15]; }; void telmalen(struct eintrag liste[], const int n) { int i; for (i = 0; i < n; i++) printf ( "\n%i. %c", i, liste[i] ); } int main(void) { struct eintrag telefonliste[10]; telmalen(telefonliste, sizeof(telefonliste)); }
Zeile 12 ist allerdings noch fehlerhaft. Das Programm wird crashen wenn du es ausfuehrst. Du musst dort auf die einzelnen Member der struct zugreifen und diese ausgeben.
-
Zeile 18 in dem Kontext auch.
Du musst schon sagen, welche Strukturelemente du bei printf ausgeben willst und da dann für jeden einzeln den richtigen Formatspezifizierer verwenden:
#include <stdio.h> struct eintrag { char vorname[15]; char name[40]; char telnr[15]; }; void telmalen(const struct eintrag liste[], int n) { int i; for (i = 0; i < n; i++) printf ( "\n%i. vorname=%s name=%s telnr=%s", i, liste[i].vorname, liste[i].name, liste[i].telnr); } int main(void) { struct eintrag telefonliste[10]; telmalen(telefonliste, 10); return 0; }
-
vielen dank!
(habe noch eine frage, mache dazu aber einen neuen thread)