Copier une chaîne de caractères

Problème

Vous souhaitez avoir deux exemplaires d’une même chaîne de caractères.

Solution

Utilisez strdup() ou un pointeur en fonction du besoin.

Discussion

Le besoin est-il de disposer d’un autre pointeur, sans pour autant dupliquer la chaîne de caractères, ou est-il nécessaire de la dupliquer ? Se contenter d’un pointeur supplémentaire vers la chaîne de caractères a l’intérêt de ne pas prendre de temps à allouer de la mémoire et recopier la chaîne. En revanche, il implique de veiller à ce qui est fait de la chaîne de caractères en particulier lors de la libération de la mémoire qu’elle occupe. Nous préférerons souvent considérer le nouveau pointeur comme un pointeur temporaire, et libérer la mémoire en utilisant le même pointeur qui a été utilisé pour allouer cette mémoire. S’il s’agit de dupliquer la chaîne de caractères, alors un appel à strdup() suffit amplement. Dans certains cas, une copie partielle de la chaîne de caractères suffit. Vous pouvez alors décomposer l’opération ainsi :


char *str_partiel; 
int nb; 
if (NULL == (str_partiel = malloc ((nb + 1) * sizeof *str_partiel))) 
  exit (EXIT_FAILURE); 
memcpy (str_partiel, str, nb); 
str_partiel[nb] = '\0';
 

Prototypes...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Allouer la mémoire pour une chaîne de caractères
Suivant
Analyser une chaîne de caractères, caractère par caractère