In C, le "stringhe" sono semplici char
matrici. Pertanto, non è possibile concatenarli direttamente con altre "stringhe".
È possibile utilizzare la strcat
funzione, che aggiunge la stringa puntata da src
alla fine della stringa puntata da dest
:
char *strcat(char *dest, const char *src);
Ecco un esempio da cplusplus.com :
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
Per il primo parametro, è necessario fornire il buffer di destinazione stesso. Il buffer di destinazione deve essere un buffer di array di caratteri. Per esempio:char buffer[1024];
Assicurati che il primo parametro abbia spazio sufficiente per memorizzare ciò che stai cercando di copiare. Se disponibile, è più sicuro utilizzare funzioni come: strcpy_s
e strcat_s
dove è necessario specificare esplicitamente la dimensione del buffer di destinazione.
Nota : un letterale stringa non può essere utilizzato come buffer, poiché è una costante. Pertanto, è sempre necessario allocare un array di caratteri per il buffer.
Il valore di ritorno di strcat
può semplicemente essere ignorato, restituisce semplicemente lo stesso puntatore che è stato passato come primo argomento. È lì per comodità e ti consente di concatenare le chiamate in una riga di codice:
strcat(strcat(str, foo), bar);
Quindi il tuo problema potrebbe essere risolto come segue:
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);