Concatenare due stringhe in C con la funzione strcat e strncat

La funzione strcat del linguaggio C è una funzione che permette di concatenare tra di loro due stringhe, in particolare concatena la stringa sorgente alla stringa di destinazione. La sintassi della funzione strcat è la seguente:



char *strcat(char *dest, const char *src);


dove src è la stringa da concatenare, mentre dest è il puntatore all’array di caratteri a cui verrà aggiunta la stringa src. Al termine dell'esecuzione la strcat restituirà il puntatore all’array di caratteri di destinazione contenente la concatenazione delle due stringhe.
Chiaramente l’array di caratteri puntato da dest dovrà essere abbastanza grande da poter immagazzinare la stringa intera definita dall’unione delle due stringhe iniziali. In caso contrario l’esecuzione della funzione strcat potrebbe causare problemi di buffer overflow.

Per evitare problemi del genere si può fare affidamento alla funzione strncat che a differenza della funzione strcat permette di definire il numero di caratteri da concatenare dalla stringa di origine alla stringa di destinazione. Di seguito viene riportata la sua sintassi:



char *strncat(char *dest, const char *src, size_t n);


dove n è il numero di caratteri della stringa src da concatenare alla stringa dest. Ovviamente anche con la funzione strncat è possibile andare incontro a problemi di buffer overflow, ma sicuramente è più adatta a fare operazioni di questo tipo.

Nota: entrambe le funzioni sono implementate all'interno della libreria string.h, di conseguenza per poter usare la strcat o la strncat bisogna includere all'interno del proprio programma la libreria usando la direttiva #include <string.h>.

Esempio di concatenazione di due stringhe con la funzione strcat in C

Nel seguente esempio useremo la funzione strcat per concatenare tra di loro due stringhe, str2 a str1. In particolare le due stringhe sono inizializzate nel seguente modo str1 = "Ciao ", mentre str2 = " mondo".



#include <stdio.h>
#include <string.h>

int main(){
    char str1[50] = "Ciao ";
    char str2[50] = "mondo";
    
    strcat(str1, str2);
    printf("str1 finale: %s", str1);

    return 0;
}


str1 finale: Ciao mondo

Ovviamente invertendo l’ordine delle due stringhe all’interno della funzione strcat, la stringa str2 diventerebbe "mondoCiao ".

Esempio di utilizzo della funzione strncat in C

Nel seguente esempio viene ripreso il programma precedente, ma invece di unire tutti i caratteri della stringa str2 alla stringa str1, verrà usata la funzione strncat per concatenare solamente i primi 3 caratteri di str2.



#include <stdio.h>
#include <string.h>

int main(){
    char str1[50] = "Ciao ";
    char str2[50] = "mondo";
    
    strncat(str1, str2, 3);
    printf("str1 finale: %s", str1);

    return 0;
}


str1 finale: Ciao mon

Indice pagine linguaggio C: