mikrocontroller.net

Forum: Compiler & IDEs C Frage (Array iteration)


Autor: Danilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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++;
  }

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>    entry = lcd_pages[pagecounter];
>    while (entry!=NULL) {

    while( entry->variabe != NULL )

Autor: Danilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.