const char* array mit strings füllen

Hallo zusammen,
Bei der immer weiteren Vermeidung von Strings in meinem Projekt habe ich ein Array definiert.
const char* relay_name[] = {"Relay 1", "Relay 2", "Relay 3", "Relay 4"};
vorher:
String relay_name[] = {"Relay 1", "Relay 2", "Relay 3", "Relay 4"};

Meine Funktion: ReadEeprom(...) liefert (noch) Strings zurück.

relay_name[0] = ReadEeprom(...) funktioniert logischerweise nicht mehr.

Wie bekomme ich jetzt die Strings als const chars* in das Array und wie kann ich dann wieder lesbare Zeichenketten aus dem Array entnehmen?

Gruß
Fred

Wie bekomme ich jetzt die Strings als const chars* in das Array

Was? Du hast doch schon die Strings darin angegeben. Dein Beispiel macht keinen Sinn

Du hast lediglich ein Array aus Zeigern. Für die eigentlichen Strings ist kein Speicher da

Besser wäre hier ein zwei-dimensionales Array. Dann kannst du die Strings mit strcpy() (oder besser strncpy()/strlcpy()) da rein kopieren

String test[] = { "Relay 1", "Relay 2", "Relay 3", "Relay 4"};

void setup()
{
	Serial.begin(9600);

	char relay_name[4][8];  //4 Strings mit je 7 Zeichen + Terminator

	for (int i = 0; i < 4; i++)
		strlcpy(relay_name[i], test[i].c_str(), sizeof(relay_name[i]));

	for (int i = 0; i < 4; i++)
		Serial.println(relay_name[i]);
}

void loop()
{
}

War vielleicht etwas blöd beschrieben.
2-dimensionales Array und strlcpy funktioniert.

Wieder ein paar Strings weniger :wink:

THX

Konstanten kann man auch im Programmspeicher ablegen, siehe PROGMEM. Besonders spannend finde ich "Arrays of strings".

Ja. Das hätte ich vielleicht erwähnen sollten. Wenn es nur um RAM sparen geht einfach im Flash lassen. Dann kann man die Strings auch mit strcpy() in ein Array kopieren. Man braucht nur ein paar Hilfs-Makros um dem Compiler zu sagen wo die Dinger genau stehen.

Der Trick dabei ist dass man z.B. 10 Strings mit je 10 Bytes im Flash hat. Aber man braucht nur einen einzigen 10 Byte Puffer im RAM um die nacheinander auszulesen