hell-student
Lieutenant
- Registriert
- Nov. 2007
- Beiträge
- 671
Hallo Zusammen,
ich möchte gerne ein Array erzeugen, dessen Elemente Structs sind (dieses habe ich selbst definiert). Hierbei soll zur Laufzeit, falls nicht genug Elemente vorhanden sind erweitert werden - zur einfachheit einfach verdoppeln. Ich habe etwas rumgesucht, jedoch nicht wirklich was hilfreiches gefunden. Hier mal mein Code:
In der Header-File:
In der Source-File:
Wenn ich nun auf die 4 Elemente des Arrays zugreifen möchte, müsste ich doch folgendes aufrufen:
Wenn ich nun auf das 5te Element zugreife, müsste es ein Fehler geben.
vergrößern dann mit: realloc()
Mache ich das nun richtig so? Habt ihr noch einen Link zu dynamischen Array mit Structs oder kann mir jemand ein kleines Beispiel geben. Ich habe alles so implementiert und in eine Funktion gepackt, die genau ms zurückgibt, als Pointer.
Wenn ich nun eine weitere Source-File nehme und die obige Header-File einbinde und dort die Funktionaufrufe kann ich auch auf das 100 Element zugreifen ohne Fehler.
Irgendwas läuft doch da schief. thx
ich möchte gerne ein Array erzeugen, dessen Elemente Structs sind (dieses habe ich selbst definiert). Hierbei soll zur Laufzeit, falls nicht genug Elemente vorhanden sind erweitert werden - zur einfachheit einfach verdoppeln. Ich habe etwas rumgesucht, jedoch nicht wirklich was hilfreiches gefunden. Hier mal mein Code:
In der Header-File:
Code:
typedef struct ms {
int a;
int b;
int c;
} ms;
In der Source-File:
Code:
ms *s = (struct ms *) malloc(4*sizeof(struct ms));
Wenn ich nun auf die 4 Elemente des Arrays zugreifen möchte, müsste ich doch folgendes aufrufen:
Code:
z.b ms[0].a = 3;
Wenn ich nun auf das 5te Element zugreife, müsste es ein Fehler geben.
vergrößern dann mit: realloc()
Code:
realloc(ms, 8*sizeof(struct ms));
Mache ich das nun richtig so? Habt ihr noch einen Link zu dynamischen Array mit Structs oder kann mir jemand ein kleines Beispiel geben. Ich habe alles so implementiert und in eine Funktion gepackt, die genau ms zurückgibt, als Pointer.
Code:
ms * erstelle_ms() {
ms *s = (struct ms *) malloc(4*sizeof(struct ms));
return s;
}
Wenn ich nun eine weitere Source-File nehme und die obige Header-File einbinde und dort die Funktionaufrufe kann ich auch auf das 100 Element zugreifen ohne Fehler.
Code:
ms *p = erstelle_ms();
ms[100].a = 20;
Irgendwas läuft doch da schief. thx