strdup

Dupliquer une chaine de caractère

Inconnue 4708 lectures 1 commentaire 5/5 (2 votes)
Souvent, lorsque vous utilisez des chaines de caractères, vous aimeriez pouvoir dupliquer une chaine de caractères, donc pour l'instant, vous pensez déclarer une nouvelle variable char d'une taille suffisante pour contenir la nouvelle chaine et puis vous utilisez strcpy pour lui donner sa valeur.

La fonction strdup fait presque la même chose sauf qu'elle se contente de dupliquer une chaine de caractères et de renvoyer l'adresse de la nouvelle chaine, cela implique que vous n'avez qu'à déclarer un pointeur de type chaine de caractères qui contiendra l'adresse renvoyée par strdup et le tour est joué. La signature de la fonction la suivante :



Comme vous le voyez, la fonction renvoit un pointeur. Ce pointeur sera soit NULL s'il n'y avait pas assez de place pour dupliquer la chaine en mémoire, soit l'adresse de la chaine dupliquée. La fonction prend en paramètre la chaine de caractères que l'on voudra dupliquer.

Application



Nous allons ici faire un simple programme permettant de dupliquer une chaine de caractères, tapez donc :



ImageImageImage


Nous commençons donc simplement par déclarer un tableau de caractères qui contiendra "Saluuuuuut !". Nous déclarons ensuite un pointeur vers une chaine de caractères nommée c, et enfin, nous utilisons la fonction strdup pour dupliquer la chaine de caractères phrase et placer l'adresse de cette duplication dans la variable c. Nous affichons ensuite les deux variables et voyons qu'elles sont bien les même, mais si vous modifiez une de ces chaines, l'autre ne se modifiera pas.

Voter :

1 commentaires

  • JB a dit:

    23/11/2011

    La fonction strdup() renvoie un pointeur sur une nouvelle chaîne de caractères qui est dupliquée depuis s. La mémoire occupée par cette nouvelle chaîne est obtenue en appelant malloc(3) , et peut (doit) donc être libérée avec free(3) .

Ajouter un commentaire