Wenn Sie Erfahrung mit C haben, werden Sie feststellen, dass Zeichenfolgen nur Zeichenarrays sind, bei denen das letzte Zeichen ein Nullzeichen ist.
Das ist ziemlich unpraktisch, da Sie das letzte Zeichen finden müssen, um etwas anzuhängen. strcat
werde das für dich tun.
Strcat durchsucht also das erste Argument nach einem Nullzeichen. Dann wird dies durch den Inhalt des zweiten Arguments ersetzt (bis dies mit einer Null endet).
Lassen Sie uns nun Ihren Code durchgehen:
message = strcat("TEXT " + var);
Hier fügen Sie dem Zeiger etwas auf den Text "TEXT" hinzu (der Typ von "TEXT" ist const char *. Ein Zeiger.).
Das wird normalerweise nicht funktionieren. Auch das Ändern des "TEXT" -Arrays funktioniert nicht, da es normalerweise in einem konstanten Segment platziert wird.
message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));
Das könnte besser funktionieren, außer dass Sie erneut versuchen, statische Texte zu ändern. strcat weist dem Ergebnis keinen neuen Speicher zu.
Ich würde stattdessen vorschlagen, so etwas zu tun:
sprintf(message2, "TEXT %s TEXT %s", foo, bar);
Lesen Sie die Dokumentation von sprintf
, um die Optionen zu überprüfen.
Und jetzt ein wichtiger Punkt:
Stellen Sie sicher, dass im Puffer genügend Speicherplatz für den Text UND das Nullzeichen vorhanden ist. Es gibt einige Funktionen, die Ihnen helfen können, z. B. strncat und spezielle Versionen von printf, die den Puffer für Sie zuweisen. Wenn die Puffergröße nicht sichergestellt wird, führt dies zu Speicherbeschädigungen und aus der Ferne ausnutzbaren Fehlern.