struct array

OP #840676
Lesenswert?
• ▲
▼
Hallo,

wie kann ich von so einer struct ein struct array anlegen?
1
 
2
struct _strArray {
3
  unsigned int *ID; 
4
  unsigned short Length; 
5
  unsigned short State; 
6
  unsigned short Type; 
7
  void          *pValue; 
8
};
1
struct _strArray StrArray[] = { 
2
    
3
   {NBR_1, LENGTH_11, STRING_1, ... usw},             
4
   {NBR_2, LENGTH_5, STRING_2,  ... usw},              
5
   {.... usw}                                 
6
};

im C-file möchte ich sowas in der richtung haben:
1
struct StrArray Array[10];
-> hier kommt immer die Fehlermeldung "variable Array was declared with 
a never-completed type"


Erreichen möchte ich folgendes: in der struct StrArray sollen die 
Spaltenelemente aufgelistet sein einer Tabelle. Zu jeder Spalte gibt es 
mehrere Variablen, die in der Struct _strArray deklariert sind (wie z.B. 
länge und Spalteninhalt (z.B. String oder Integer in der Spalte 
stehen)).

Insgesamt soll es 10 Reihen geben / also 10 Variablen die während der 
Laufzeit die Tabelle Array[10] füllen sollen.


Leider funktioniert mein Ansatz noch nicht.

main.c
1
struct StrArray *ptr; 
2
ptr = &Array[10]     //ptr soll auf den anfang der tabelle zeigen
3

4
for(i=0; i<10; i++)
5
{
6
  //elemente in der tabelle vordefinieren
7
}

gruß
Bernd
Gast #840684
Lesenswert?
• ▲
▼
Hi,
mit
1
 struct _strArray StrArray[];
legst du keinen typ an, sonder deklarierst eine Variable, die ein array 
ist. Du kannst also direkt auf StrArray arbeiten:
1
struct _strArray {
2
  unsigned int *ID; 
3
  unsigned short Length; 
4
  unsigned short State; 
5
  unsigned short Type; 
6
  void          *pValue; 
7
}; 
8
struct _strArray StrArray[] = { 
9
    
10
   {NBR_1, LENGTH_11, STRING_1, ... usw},             
11
   {NBR_2, LENGTH_5, STRING_2,  ... usw},              
12
   {.... usw}                                 
13
};
14
for(i=0; i<sizeof(StrArray)/sizeof(struct _strArray); i++)
15
{
16
  StrArray[i].Length = 34;
17
}

zu spaet....
OP #840685
Lesenswert?
• ▲
▼
>struct StrArray Array[10];

>gebraucht die Variable StrArray als Typ - das geht natürlich
>nicht...

danke für deine Erklärung.

Wie kann ich das anders machen? Ich möchte ja ein Array erstellen, 
welches vom Typ StrArray sein soll. Sprich jeder Array-Index von Array[] 
sollte die Elemente die innerhalb der struct StrArray gelistet sind, 
beinhalten.


>zu spaet....

me too - dankeschön...

gruß
Bernd
OP #840693
Lesenswert?
• ▲
▼
wenn ich es etwas umschreibe
1
typedef struct list_struct {
2

3
   struct StrArray *list; 
4

5
} LIST_STR;

dann kann ich den pointer setzen sowie die Tabelle.

Aber wie kann ich dann genau auf ein Element von StrArray zugreifen?
1
LIST_STR *ptr;
2
LIST_STR LIST_TBL[10]; 
3
 
4
ptr = &LIST_TBL[0]     //ptr soll auf den anfang der tabelle zeigen
5

6
for(i=0; i<10; i++)
7
{
8
  //hier bekomm ich noch einen fehler
9
  ptr->list[0]->Length = 0; 
10
}

gruß
Bernd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren