Concaténer deux chaînes de caractères

Problème

Vous disposez de deux chaînes et voulez une chaîne résultant de la concaténation de ces deux chaînes.

Solution

Sans glib, l’opération consiste à disposer d’un espace suffisant pour accueillir les deux chaînes de caractères, puis à les y recopier. Avec glib, utilisez g_strjoin() ou g_string_append().

Discussion

La première question qui se pose est celle de l’espace mémoire que vous voulez utiliser. Voulez-vous agrandir la taille de l’espace mémoire alloué pour la première chaîne de caractères ? Voulez-vous créer un nouvel espace ? Disposez-vous déjà d’un espace dédié à cet usage ?

Si vous voulez réutiliser l’espace mémoire d’une chaîne de caractères, utilisez realloc() pour l’agrandir. Attention, realloc() est coûteuse en temps CPU ; dans une boucle, anticipez l’allocation mémoire pour éviter l’usage de realloc(). Remarquez par contre que si l’utilisation de realloc() est en général déconseillée à cause des nombreux bogues qu’elle entraîne, en particulier suite à une gestion très délicate des pointeurs, utiliser realloc() avec une chaîne de caractères ne devrait pas réserver de mauvaises surprises. Le seul point à retenir est que si l’opération...

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
Analyser une chaîne de caractères, caractère par caractère
Suivant
Convertir un nombre en chaîne de caractères et réciproquement