Hallo Forum,
ich habe eine Frage zum besseren Verständnis.
Gestolpert bin ich über diesen Konstrukt:
char *s = strcat(strdup("irgendwas"), "nochwas");
Ich war der Meinung (eher Hoffnung) das die Funktion strcat die Größe des Puffers anpasst.
Macht sie aber nicht. Also habe ich mir eine Funktion dafür gebastelt.
char *strAnhaengen(const char *s1, const char *s2){
int l1 = strlen(s1);
int l2 = strlen(s2);
char s[l1 + l2 + 1] = {'\0'};
strcat(s, s1);
strcat(s, s2);
return s;
}
Ich erhalte folgende Warnung:
warning: address of local variable 's' returned
Klar der Speicherplatz von s wird nach dem verlassen der Funktion freigegeben. Also habe ich s noch einmal kopiert.
return strdup(s);
Der Compiler meckert nun nicht mehr.
Aber ist das der richtige Weg?
Wie würdet ihr das lösen?
Kann man den Speicherbereich von s1 vergrößern (Übergabe dann ohne const)?
Grüße Martin