Fonction strcpy

Entête à inclure

#include <string.h>  // <cstring> en C++

Fonction strcpy

char * strcpy( char * destination, const char * source );

Cette fonction permet de copier le contenu d'une chaîne de caractère dans une autre. Bien entendu, la chaîne de caractère devant recevoir le contenu de l'autre doit être allouée de manière à être suffisament grande pour contenir tout le texte.

En langage C, les chaînes de caractères sont qualifiées d'AZT : A Zéro Terminal. Cela signifie qu'une chaîne de caractères se termine forcément par un code ASCII nul (pouvant aussi être représenté par '\0'). La fonction strcpy copiera chaque caractère, un à un, jusqu'à atteindre ce fameux code ASCII nul. Au passage, il sera lui aussi copié.

Paramètres

  • destination : permet de spécifier l'adresse de la chaîne de caractère devant recevoir le contenu de l'autre. Vous devez avoir pré-alloué ce bloc de mémoire avec la taille suffisante pour recevoir la chaîne à copier. Cette allocation pourra être réalisée via la fonction malloc.
  • source : permet de définir l'adresse de la chaîne de caractères à dupliquer.

Valeur de retour

La fonction renvoie l'adresse de la chaîne dupliquée : cela peut permettre de cascader un appel à strcpy, avec un appel à strcat.

Exemple de code

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

/* Just for information : 
char * mystrcpy( char * destination, const char * source ) {
    char * returnValue = destination;
    while( *destination++ = *source++ );
    return returnValue;
}
*/


int main() {

    char * firstName = (char *) malloc( 40 );
    char * lastName = (char *) malloc( 40 );
    char * fullName;
    size_t fullSize;

    printf( "Please, enter your first name: " );
    scanf( "%s", firstName );

    printf( "Enter your last name: " );
    scanf( "%s", lastName );
       
    /* The last +1 is for the last nul ASCII code for the string */
    fullSize = strlen( firstName ) + 1 +  strlen( lastName ) + 1;
       
    /* Memory allocation and copy */
    fullName = (char *) malloc( fullSize );
    strcpy( fullName, firstName );
    strcat( fullName, " " );
    strcat( fullName, lastName );
    /* You can also write :
    strcat( strcat( strcpy( fullName, firstName ), " " ), lastName );
    */
        
    printf( "Full name is: %s\n", fullName );
        
    free( fullName );
    free( lastName );
    free( firstName );
    
    return 0;
}

Sujets connexes

malloc
strcat
strcmp
strlen