Das gibt einen Speicherbereich der konstant ist und eine feste Länge hat. Für's anhängen mußt Du einen weiteren Speicherbereich ausreichender Größe bereitstellen und beide Teile dort hineinkopieren. Besser wäre char xvariablex[maxLen] = "Test 12345 - ";
das Platz für maxLen änderbare Zeichen bereitstellt.
Sie können einen cString oder die String-Klasse verwenden.
const char* var1 = "abc";
const char* var2 = "123";
char buffer[10]; // die Größe muss groß genug für den Inhalt sein plus ein Byte für ein abschließendes Nullzeichen
…
strncpy(buffer, var1, sizeof buffer);
strncat(buffer, var2, sizeof buffer);
buffer[sizeof buffer - 1] = ‘\0`; // Stellen Sie sicher, dass der cString nullterminiert ist
Seien Sie sehr vorsichtig mit dem Speicher und einem möglichen Überlauf mit cStrings. Strings können auch versteckte Nachteile haben.
Aber Die eigentliche Frage, die Sie sich stellen müssen, ist, brauchen Sie wirklich eine neue Variable mit der Verkettung der anderen? was haben Sie damit vor?
Aber Wenn Sie die Klasse String verwenden, gibt es keinen wirklichen Grund, sich für sprintf() zu entscheiden. das macht Sinn, wenn Sie cStrings haben (obwohl es mehr zur Flash-Nutzung beiträgt als strcpy() und strcat(), daher die Verwendung im Beispiel).
verwendet. Die brauchen etwas mehr Programmspeicher (flash) als strcpy und strcat.
"Sie tragen mehr zu Flash Nutzung bei" kannst du positiv oder negativ lesen.
sprintf wird noch mehr Speicher brauchen.
die Arduino String Klasse vermutlich noch mehr.
Das kannst du aber alles selber ausprobieren in dem du drei kompilierbare Sketche machst und vergleichst was der Compiler meldet.
Probier das mal aus. Du willst ja besser verstehen.
Wenn du weiter Fragen dazu hast, dann empfehle ich: ersuche einen Moderator deine Fragen von diesem Thread abzulösen. Denn all deine Fragen, tragen nichts zur Beantwortung zur Frage vom ursprünglichen Poster bei, der sich seit 26 Tagen hier nicht mehr gemeldet hat.
Ja, Was ich meinte, ist, dass Sie, wenn Sie sich entscheiden, die String-Klasse zur Darstellung Ihrer char data (Zeichenkette ??) zu verwenden, bereits alle Methoden zum Suchen, Teilen, Verketten usw. in der Klasse haben. Also bleib bei der Klasse. Es bringt wenig Nutzen, zur cString-Darstellung zu gehen und cString-Funktionen anzuwenden.
Wenn Sie cStrings verwenden möchten, verwenden Sie sie überall im Code. Dann können Sie strncat oder strlcat für die Verkettung verwenden. Wenn Sie sprintf verwenden, ist es flexibler, aber es kostet Flash-Speicher.
(Mein Deutsch ist etwas beschränkt, um dies auszudrücken ...)