Wenn Sie Erfahrung mit C haben, werden Sie feststellen, dass Strings nur Char-Arrays sind, bei denen das letzte Zeichen ein Nullzeichen ist.
Das ist ziemlich lästig, da man das letzte Zeichen suchen muss, um etwas anzuhängen. strcat
wird dies für Sie tun.
strcat sucht also im ersten Argument nach einem Nullzeichen. Dann ersetzt es dieses durch den Inhalt des zweiten Arguments (bis dieses mit einer Null endet).
Gehen wir nun Ihren Code durch:
message = strcat("TEXT " + var);
Hier fügen Sie etwas zum Zeiger auf den Text "TEXT" hinzu (der Typ von "TEXT" ist const char*. Ein Zeiger.).
Das wird in der Regel nicht funktionieren. Auch das Ändern des "TEXT"-Arrays wird nicht funktionieren, da es normalerweise in einem konstanten Segment platziert ist.
message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));
Das könnte besser funktionieren, außer dass Sie wieder versuchen, statische Texte zu ändern. strcat weist keinen neuen Speicher für das Ergebnis zu.
Ich würde vorschlagen, stattdessen etwas Ähnliches zu tun:
sprintf(message2, "TEXT %s TEXT %s", foo, bar);
Lesen Sie die Dokumentation von sprintf
um seine Optionen zu prüfen.
Und nun ein wichtiger Punkt:
Vergewissern Sie sich, dass der Puffer genügend Platz hat, um den Text UND das Nullzeichen aufzunehmen. Es gibt eine Reihe von Funktionen, die Ihnen dabei helfen können, z.B. strncat und spezielle Versionen von printf, die den Puffer für Sie reservieren. Wenn Sie die Puffergröße nicht sicherstellen, führt dies zu Speicherfehlern und aus der Ferne ausnutzbaren Fehlern.