Seite 1 von 1

Variable Größe von Strukturen/Arrays

Verfasst: So Mär 10, 2013 12:56 am
von FritziFoppel
Hi,
Ich versuch gerade mein altes Programm, aus dem Thread "Beschreiben von Dateien", ein wenig zu verbessern. Dabei stoß ich auf das Problem, dass ich meine Strukturen nur statisch aufbauen kann (ich, bis jetzt zumindest). D.h. für eine Struktur muss ich einen bestimmten Wert, für die Anzahl an zu erstellenden Strukturen angeben.

Code: Alles auswählen

struct Elemente
{
    char element1 [64];
    char element2 [64];
    char element3 [64];
    char element4 [64];
    char element5 [64];
};

struct Elemente elemente[5];
Geht es dann, dass ich die Eingabe abbrechen kann, wenn ich genug von der Struktur hab?

Re: Variable Größe von Strukturen/Arrays

Verfasst: So Mär 10, 2013 10:56 am
von Xin
In der Regel unterteilst Du die Strukturen weiter und machst dann Zeiger auf die kleineren Strukturen:

Code: Alles auswählen

struct Elemente
{
  unsigned int len1;
  char * element1;
  unsigned int len2;
  char * element2;
  unsigned int len3;
  char * element3;
  unsigned int len4;
  char * element4;
  unsigned int len5;
  char * element5;
};
Das kann man natürlich weiter zusammenfassen:

Code: Alles auswählen

struct Element
{
  unsigned int length;
  char * elements;
};

struct Elemente
{
  struct Element element1;
  struct Element element2;
  struct Element element3;
  struct Element element4;
  struct Element element5;
};
Wie Du die Daten wegschreibst, musst Du die Daten "serialisieren". Du schreibst die Länge der Daten und anschließend genau soviele Bytes aus dem Bereich, auf den der Zeiger zeigt.

Zeiger musst Du in dem Fall natürlich mit malloc/free anlegen (unter C)