Fonction Strdup dans la langue C

Fonction Strdup dans la langue C
La mémorisation et la maîtrise des fonctions qui traitent des chaînes sont très importantes car nous les utilisons toujours dans une partie du programme que nous développons.

Les chaînes sont un élément important de la programmation car ils sont utilisés pour envoyer des messages à l'utilisateur, afficher les résultats, lire les fichiers ou spécifier leur chemin, entre autres. Ils sont également la méthode d'entrée et de sortie qui facilite l'interaction entre l'utilisateur et le programme.

Dans cet article de Linux Hint, vous apprendrez à utiliser la fonction Strdup () pour dupliquer les chaînes. Nous verrons la syntaxe et la description théorique de l'appel de la méthode, de ses arguments d'entrée et de sortie et le type de données accepté dans chaque cas.

Ensuite, nous appliquons ce que nous avons appris dans les exemples pratiques en utilisant des extraits de code et des images pour vous montrer comment utiliser la fonction strdup () pour dupliquer les chaînes.

Syntaxe de la fonction strdup () dans le langage C

char * strdup (const char * str);

Description de la fonction strdup () dans le langage C

La fonction strdup () duplique une chaîne. Cette fonction reproduit la chaîne qui est indiquée par le pointeur STR qui est passé dans l'argument d'entrée, et renvoie un pointeur vers la nouvelle chaîne en résultat.

Strdup () appartient à la famille de fonctions strXXDup (), qui sont toutes destinées à dupliquer les chaînes, mais chacune a un mode d'appel et une fonctionnalité différents pour répondre aux besoins particuliers du programmeur.

Comme toutes les fonctions de traitement des chaînes, strdup () est défini dans la «chaîne.en-tête h ”. Pour l'utiliser, vous devez l'inclure dans votre code comme suit:

#inclure

Comment dupliquer une chaîne en utilisant la fonction strdup () dans le langage C

Dans cet exemple, nous utilisons la fonction strdup () pour dupliquer une chaîne. Ensuite, nous utilisons la fonction printf () pour afficher les pointeurs de chaîne «originaux» et «en double» dans la console de commande.

Pour ce faire, nous incluons le «Stdio.h ”et« String.En-têtes H ”dans notre code et définissez les deux pointeurs de cordes à l'intérieur de la fonction principale (). Le premier est appelé «original» qui contient le «Exemple pour la fonction strdup ()" expression. Le deuxième pointeur est appelé «Duplicate» qui contient l'emplacement où la fonction strdup () stocke la copie de la chaîne d'origine.

Une fois que les chaînes utilisées par le programme sont définies, nous appelons la fonction strdup () et passons le pointeur à la chaîne d'origine comme argument d'entrée et le pointeur vers la chaîne dupliquée comme argument de sortie. Ensuite, nous utilisons la fonction print () pour afficher le «original» et les pointeurs de chaîne «en double» sur la console de commande. Voici le code de cet exemple:

#inclure
#inclure
vide main ()

char * original = "Exemple de la fonction strdup ()";
char * duplicate;
Duplicate = strdup (original);
printf ("original:% s \ n", original);
printf ("Duplicate:% s \ n", duplicate);

Comme nous le voyons dans la figure suivante, Strdup () reproduit la chaîne d'origine en reproduisant littéralement son contenu.

Différences entre les fonctions strdup () et strndup ()

La famille StrxxDupx () se compose des fonctions suivantes:

char * strdup (const char * s);
char * strndup (const char * s, size_t n);
char * strdupa (const char * s);
char * strndupa (const char * s, size_t n);

Les fonctions de cette famille sont toutes conçues pour dupliquer les cordes, mais chacune d'elles fonctionne d'une manière différente.

Comme nous l'avons vu, la fonction strdup () reproduit complètement la chaîne qui est envoyée dans son argument d'entrée et renvoie une copie exacte dans son argument de sortie.

La fonction strndup () reproduit la chaîne de son argument d'entrée. Il peut le faire complètement ou partiellement.

Contrairement à strdup (), la fonction strndup () prend deux arguments d'entrée. Le premier argument est «Str» qui est le pointeur vers la chaîne à dupliquer. Le deuxième argument est «n» qui est une variable de type size_t qui spécifie le nombre de caractères qu'il copie.

Dans l'exemple suivant, nous voyons l'utilisation de la fonction strndup () où seuls 8 des caractères de la chaîne d'origine sont dupliqués.

#inclure
#inclure
vide main ()

char * original = "Exemple de la fonction strdup ()";
char * duplicate;
size_t n = 8;
Duplicate = strndup (original, n);
printf ("original:% s \ n", original);
printf ("Duplicate:% s \ n", duplicate);

Comme le montre la figure suivante, la fonction strndup () duplique un nombre de caractères «n» de la chaîne d'origine.

Erreurs qui peuvent être générées par la fonction strdup ()

L'erreur que cette fonction peut générer est que «le système n'a pas assez de mémoire pour exécuter le processus», ce qui est peu probable sur les systèmes actuels.

Cette erreur est définie dans le «errno.L'en-tête h ”et son code peuvent être interrogés via la variable globale Errno. Sa définition est énome.

Conclusion

Dans cet article de Linux Hint, nous avons expliqué comment utiliser la fonction strdup () qui appartient à la famille des fonctions de traitement des chaînes qui est définie dans la chaîne.tête H.

Nous avons examiné la syntaxe de cette fonction et avons fourni une explication théorique sur son utilisation, ses arguments d'entrée et de sortie.

Pour vous aider à mieux comprendre comment cela fonctionne, nous avons créé un exemple pratique avec du code et des images où vous pouvez voir comment les pointeurs et les chaînes utilisés par cette fonction sont créés et comment la fonction est appelée.

Nous vous avons également montré comment utiliser la fonction strndup (), une autre fonction de la famille strXxDupx (), afin que vous connaissiez les différentes possibilités que le langage C offre pour dupliquer les chaînes.