Zeichenketten

Hallo,

hier mal ´ne ganz blöde Frage.

Für Zeichenketten deklariere ich ein Array aus Characters:

char cColor[16] = "no state";

Dann weise ich der Zeichenkette je nach Verlauf des Programms einen neuen Inhalt zu:

if(Error)
copy(cColor, "Red");
else
copy(cColor, "Green");

Serial.print("Error state: ");
Serial.print(cColor);
Serial.print(\n);

Doch auf dem Seriellen Monitor erschein immer nur die Ausgabe:

Error state: no state

Mit einem Variablentyp (String) ist das genau so.
Sind die Variablen nur als "read only" definiert?

Vielen Dank!
Fujitsufan

Fujitsufan:
Sind die Variablen nur als "read only" definiert?

Nein, dann wären es ja Konstanten.

Der Fehler liegt in der Funktion copy().

Vieleicht weil Du lokale Variablen benutzt?

Weil Du aber den Sketch geheimhälst kann ich es nicht kontrollieren.

Grüße Uwe

versuch es mal so

 if(Error)
    strcpy(cColor, "Red");
 else
    strcpy(cColor, "Green");

Serial.print("Error state: ");
Serial.print(cColor);
Serial.print(\n);

Wenn du mit C Strings arbeitest schau dir die Standard C String Funktionen an (strcpy(), strcmp(), etc.). Die gibt es seit Jahrzehnten und sind sehr gut dokumentiert.

Schau Dir mal meine Zusammenfassung über Zeichenketten in C an.

Gruß Tommy

Hallo zusammen,

mit strcpy(,) geht's.

Vielen Dank nochmals.

Muss mich unbedingt intensiver mit diesem Thema beschäftigen.

Fujitsufan

Muss mich unbedingt intensiver mit diesem Thema beschäftigen.

Dann solltest du dir auch dies ansehen:

char* cColor;
if(Error)
   cColor = "Red";
else
   cColor = "Green";

Serial.print("Error state: ");
Serial.println(cColor);

char* ist auch ein praktischer Datentyp. Und ein schöner Einstieg in Pointer allgemein


Kann man natürlich auch kompakter schreiben:

Serial.print("Error state: "); Serial.println( Error? "Red" : "Green");