Funzione strcpy e strncpy per copiare una stringa in C

La funzione strcpy del linguaggio C è una funzione in grado di copiare una stringa (per esempio contenuta all’interno di un array di caratteri) dalla sua zona attuale di memoria (origine), ad una nuova zona di memoria (destinazione). La sintassi della strcpy è la seguente:



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


dove src è il puntatore alla stringa da copiare, mentre dest è il puntatore alla zona di memoria in cui la stringa src verrà copiata. Inoltre, al termine dell’operazione, la funzione strcpy restituirà il puntatore alla posizione della stringa copiata in dest.

Nota: durante l’operazione di copia anche il carattere nullo '\0' viene incluso.

La funzione strcpy è una delle funzioni del C che sono rese disponibili dalla libreria string.h, una libreria contenente numerose funzioni per effettuare particolari operazioni sulle stringhe. Per poter usare la strcpy, risulta quindi necessario includere all’interno del proprio codice la libreria usando la direttiva #include <string.h>.

Mentre la funzione strcpy copia ogni singolo elemento di una stringa, la funzione strncpy del C permette di copiare al massimo n caratteri di una stringa da una zona di memoria all’altra. Di seguito viene riportata la sua sintassi:



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


si può notare che risulta essere identica alla sintassi della funzione strcpy, con l’unica differenza che viene richiesto un parametro aggiuntivo, ovvero il numero di caratteri da copiare dalla stringa src alla stringa dest.

Esempio di utilizzo della funzione strcpy in C

Nel seguente esempio useremo la funzione strcpy per copiare una stringa contenuta all’interno di un array di caratteri, precedentemente inizializzato, in un nuovo array di caratteri.



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

int main(){
    char str1[50] = "Ciao mondo!";
    char str2[50];
    
    strcpy(str2, str1);
    
    printf("Stringa1: %s\n", str1);
    printf("Stringa2: %s\n", str2);

    return 0;
}


Stringa1: Ciao mondo! Stringa2: Ciao mondo!

Una volta eseguita la funzione strcpy, l’array di caratteri str2 conterrà la stringa contenuta all’interno dell’array str1.

Chiaramente la funzione strcpy può essere utilizzata scrivendo direttamente, nel parametro di origine, la stringa da copiare.



strcpy(str2, "Ciao mondo!");

Esempio di utilizzo della funzione strncpy in C

Per copiare solamente una parte della stringa di origine, dobbiamo fare uso della funzione strncpy specificando il numero di caratteri da copiare, come nel seguente esempio:



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

int main(){
    char str1[50] = "Ciao mondo!";
    char str2[50];
    
    strncpy(str2, str1, 7);
    
    printf("Stringa1: %s\n", str1);
    printf("Stringa2: %s\n", str2);

    return 0;
}


Stringa1: Ciao mondo! Stringa2: Ciao mo

Indice pagine linguaggio C: