String Array? oder 2-dim-Array?

Gast #1423388
Lesenswert?

Hi Leute,

ich möchte im Eeprom ein paar Befehle als Strings ablegen.
Allerdings möchte ich nicht, dass ich jeden Befehl über einen 
Variablennamen anspreche, sondern einfach ein Laufindex verwenden, da 
die Strings vergleichen werden. Nun stellt sich mir die Frage, ob es 
überhaupt ein Stringarray gibt und wie man sowas deklariert und 
initialisiert, oder ob ich dafür 2-dimensionale Arrays verwende.
Über eine kleine Hilfe wäre ich sehr dankbar...

MFG Carlau
Gast #1423411
Lesenswert?

Vielen Dank für die rasche Antwort.

Die Befehle gleich lang machen ist nun nicht mehr möglich, da das 
Protokoll größtenteils steht.
Aber das mit dem 2ten Index klingt interessant und nach einer guten 
Lösung. Bloß wie könnte ich die Startpositionen der Strings in meinem 
EEPROM ermitteln. Was für ein array muss das dann sein? was muss ich da 
genau abspeichern und wie mache ich das? brauche ich da die Adresse 
meines Strings (genauer die Adresse des ersten Elements in dem 
jeweiligen String)?
Muss mein Indexarray dann vom char*-Typ oder irgendwie deferenziert also 
mit &String oder so sein?
Sorry aber strings machen mich verrückt bzw die Pointer, obwohl es ja 
nix anderes als ein nullterminiertes chararray ist.
Vielleicht kann du das näher erläutern. Wäre dir sehr dankbar...
Gruß Carlau
#1423414
Lesenswert?

carlau schrieb:
> Vielen Dank für die rasche Antwort.
>
> Die Befehle gleich lang machen ist nun nicht mehr möglich, da das
> Protokoll größtenteils steht.

Du hast mich missverstanden (und ich habe mich unklar ausgedrückt).
Bei einem 2D Array sind alle Zeilen gleich lang. Das heißt nicht, dass 
die Strings in dem Array alle gleich lang sein müssen. Du hast dann 
einfach nur ein paar ungenutzte Bytes zwischen den Strings.

> Aber das mit dem 2ten Index klingt interessant und nach einer guten
> Lösung. Bloß wie könnte ich die Startpositionen der Strings in meinem
> EEPROM ermitteln.

Mit dem AdressOf-Operator?

> Was für ein array muss das dann sein?

Ein Array von Pointer auf char?

> was muss ich da
> genau abspeichern

Würd ich gar nicht.
Das Indexarray würde ich beim Programmstart zusammenbauen.
1
char Text1[] = "Hallo";
2
char Text2[] = "Welt";
3

4
char* Texte[2];
5

6
int main()
7
{
8
  Texte[0] = Text1;
9
  Texte[1] = Text2;
10

11
  for( i = 0; i < 2; ++i )
12
    printf( "%s\n", Texte[i] );
13
}

Du baust jetzt um auf: Texte sind im EEPROM

Wenn du damit durch bist, kannst du dich ja damit versuchen auch das 
Texte Array ins EEPROM zu verfrachten und vom Compiler initialisieren zu 
lassen
1
char Text1[] = "Hallo";
2
char Text2[] = "Welt";
3

4
char* Texte[] = { Text1, Text2 };
5

6
int main()
7
{
8
  for( i = 0; i < 2; ++i )
9
    printf( "%s\n", Texte[i] );
10
}

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