So funktioniert es:
free (str3);
freigeben
Hier ist ein Beispiel für das Spielen mit. Es ist sehr einfach und hat keine fest codierten Längen. Sie können es hier versuchen: Ссылка
Siehe diesen Beitrag für Informationen zur Größe von char
%Vor%Hier ist eine funktionierende Lösung:
%Vor%Ausgabe:
%Vor% Sie müssen Speicher für Ihre Strings reservieren. Im obigen Code deklariere ich str1
und str2
als Zeichenarrays mit 16 Zeichen. Ich habe strcpy
verwendet, um Zeichen von String-Literalen in sie zu kopieren, und strcat
, um die Zeichen von str2
an das Ende von str1
anzuhängen. So sehen diese Zeichen-Arrays während der Ausführung des Programms aus:
Wenn Sie Zeichenfolgenliterale wie "this is a string"
und in Ihrem Fall "sssss"
und "kkkk"
verwenden, stellt der Compiler sie in den Nur-Lese-Speicher. % Co_de% versucht jedoch, das zweite Argument nach dem ersten Argument zu schreiben. Sie können dieses Problem lösen, indem Sie einen ausreichend großen Zielpuffer erstellen und darauf schreiben.
Beachten Sie, dass Sie in den letzten Compilern normalerweise eine Warnung erhalten, wenn Sie String-Literale in nicht-konstante Zeichenzeiger umwandeln.
strcat
versucht, den zweiten Parameter an den ersten anzuhängen. Dies wird nicht funktionieren, da Sie implizite konstante Strings zuweisen.
Wenn Sie nur zwei Strings ausgeben möchten,
%Vor%Würde ich tun.
Sie könnten etwas wie
tun %Vor% zum Erstellen einer verketteten Zeichenfolge; Bedenken Sie jedoch, stattdessen strncat / strncpy zu verwenden. Und lesen Sie die Manpages sorgfältig für das oben genannte. (oh und vergiss nicht free
str1 am Ende).
Tags und Links c