STRCAT |
Concaténation de chaine |
---|---|
Langage C++ | cstring (string.h) |
Syntaxe
char *strcat(char *dest,char *source) |
Paramètres
Nom | Description |
---|---|
dest | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ de base. |
source | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ à ajouter à la fin de dest. |
Description
Cette fonction permet la concaténation de chaînes.
Remarques
- La fonction strcat() concatène une copie de dest en source et termine dest avec un null. Le terminateur null terminant à l'origine dest est remplacé par le premier caractère de source. La chaîne de caractères source n'est pas modifiée par l'opération. Si les tableaux se chevauchent, le comportement de strcat() est imprévisible.
- La fonction strcat() renvoie dest.
- N'oubliez pas qu'aucune vérification des limites n'a lieu, il est donc de la responsabilité du programmeur de s'assurer que dest est suffisamment grand pour contenir à la fois son contenu d'origine et également celui de source.
- Concaténation et modification de la chaîne de destination : strcat modifie directement la chaîne de caractères de destination en ajoutant source à la fin :
- Attention à la taille du tampon : strcat ne vérifie pas si la taille de destination est suffisante pour contenir le résultat. Un dépassement de mémoire (buffer overflow) peut se produire si l'espace alloué est insuffisant. Mauvais exemple :
- Utilisation sécurisée avec strncat : Pour éviter un dépassement de mémoire, il est recommandé d'utiliser strncat, limitant la taille copiée :
- Ajout du caractère nul ('\0') automatique : strcat ajoute automatiquement le caractère nul ('\0') à la fin du résultat. Cependant, si la concaténation dépasse la taille allouée, il peut être écrasé, causant un comportement indéfini. Il est donc crucial de vérifier que destination a suffisamment d'espace.
- Interdiction d'utiliser une chaîne littérale en destination : En C++, les chaînes de caractères littérales sont entreposées en mémoire en lecture seulement, donc modifier leur contenu entraîne un comportement indéfini. Exemple incorrect :
- Retourne un pointeur vers la destination : strcat retourne toujours un pointeur vers destination, ce qui permet de chaîner les appels. Exemple :
- Alternatives modernes en C++ : En C++, il est préférable d'utiliser std::string au lieu de strcat, car elle gère la mémoire dynamiquement et évite les débordements. Exemple avec std::string :
Après exécution, str1 contiendra "Bonjour le monde!".
Ici, str1 peut entreposer 9 caractères (8 + '\0'), mais strcat tente d'ajouter 10 caractères supplémentaires.
Ici, la taille maximale à ajouter est calculée pour éviter un dépassement du tampon.
Il faut toujours utiliser un tableau de caractères modifiable.
str1 contiendra "Bonjour le monde!" après l'exécution.
L'opérateur += ou + rend la manipulation des chaînes plus sûre et intuitive.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

on obtiendra le résultat suivant :
Gladir.comVoir également
Langage de programmation - C++ - Référence de procédures et fonctions - strcpy
Langage de programmation - C - Référence de procédures et fonctions - strcat
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 252.