Forum: Compiler & IDEs C Frage (Array iteration)


von Danilo (Gast)


Lesenswert?

Hallo,

eine C Frage. Der Tag war irgendwie zu lang oder das Essen schlecht,
ich bekomms einfach nicht hin.

Ich möchte über das Array lcd_pages solange iterieren bis ein Eintrag
NULL ist... in dieser Iteration wiederum über das entsprechende Array
(hier lcd_page_1) bis auch dort ein Eintrag NULL ist.

 Momentan ist mein Problem das ich zwar den ersten Eintrag von
lcd_page_1 bekomme, aber dann nicht die folgenden. Ich lese dann wild
im Speicher rum, obwohl mein Code gehen müsste... (ist schon der x-te
Versuch und ich überseh sicher nur ne Kleinigkeit)

Danke im Voraus!!!

typedef struct {
  void* variable;
  char type;
} ST_DISPLAYENTRY;

ST_DISPLAYENTRY lcd_page_1[] = {
  {&cVar1,VAR_CHAR},
  {&cVar2,VAR_CHAR}
  {NULL,0}
};

ST_DISPLAYENTRY* lcd_pages[] = {
    lcd_page_1,
    NULL
};

...

  int pagecounter = 0;
  int entrycounter;
  ST_DISPLAYENTRY* entry;

  while (lcd_pages[pagecounter]!=NULL) {
    entrycounter = 0;
    entry = lcd_pages[pagecounter];
    while (entry!=NULL) {
      ...
      entry++;
    }
    pagecounter++;
  }

von Werner B. (Gast)


Lesenswert?

ST_DISPLAYENTRY lcd_page_1[] = {
  {&cVar1,VAR_CHAR},
  {&cVar2,VAR_CHAR},
  NULL /* jetzt steht hier auch NULL und kein Pointer auf NULL*/
};

oder so Ähnlich...

von Karl H. (kbuchegg)


Lesenswert?

>    entry = lcd_pages[pagecounter];
>    while (entry!=NULL) {

    while( entry->variabe != NULL )

von Danilo (Gast)


Lesenswert?

ST_DISPLAYENTRY lcd_page_1[] = {
  {&cVar1,VAR_CHAR},
  {&cVar2,VAR_CHAR},
  NULL /* jetzt steht hier auch NULL und kein Pointer auf NULL*/
};

Hmm, das geht nicht, es ist ja kein Pointer auf ST_DISPLAYENTRY.

Aber wie blöd man manchmal ist, klar muss ich auf ->variable testen!

DANKE!!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.