STRNCAT |
Concaténation de N caractère de la chaine |
---|---|
Langage C | string.h |
Syntaxe
char *strncat(const char *str1,const char *str2,size_t n); |
Paramètres
Nom | Description |
---|---|
str1 | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ de base. |
str2 | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ à ajouter à la fin de str1. |
n | Ce paramètre permet d'indiquer le nombre de caractères à ajouter à la fin de str1. |
Description
Cette fonction permet d'ajouter les «n» premiers caractères de la chaîne de caractères «str1» à la chaîne de caractères «str2».
Algorithme
MODULE STRNCAT(dest, src, n) i ← 0 * Trouver la fin de la chaîne de caractères dest BOUCLE FAIRE QUE dest[i] ≠ '\0' i ← i + 1 FIN BOUCLE FAIRE QUE * Ajouter les caractères de src à la fin de dest, jusqu'à n caractères j ← 0 BOUCLE FAIRE TANT QUE (src[j] ≠ '\0') et (j < n) dest[i] ← src[j] i ← i + 1 j ← j + 1 FIN BOUCLE FAIRE TANT QUE * Ajouter le caractère nul de fin à la fin de dest dest[i] ← '\0' * Retourner le pointeur vers dest RETOURNE dest |
Remarques
- Limitation de la longueur : La fonction permet de limiter le nombre de caractères copiés depuis la chaîne source grâce à n. Cela évite de dépasser la taille de la chaîne destination, ce qui pourrait entraîner des erreurs de mémoire. Cependant, il est important que la chaîne de destination ait suffisamment d'espace pour accueillir les caractères ajoutés ainsi que le caractère nul.
- Modification de la chaîne de caractères de destination : Contrairement à strcat, ajoutant une chaîne de caractères complète, strncat ajoute seulement un nombre limité de caractères de la chaîne de caractères source. La chaîne destination est modifiée et sa longueur augmente en conséquence, avec un caractère \0 ajouté à la fin.
- Comportement avec une taille n élevée : Si n est plus grand que la longueur de la chaîne source, strncat se comporte de manière similaire à strcat, copiant simplement toute la chaîne de caractères source jusqu'à son caractère nul. Toutefois, il ne dépasse jamais la limite n et s'assure que le dernier caractère ajouté soit bien un \0.
- Précautions à prendre avec la mémoire : Bien que strncat permette de limiter le nombre de caractères copiés, il est essentiel de s'assurer que la chaîne de destination possède suffisamment de mémoire pour contenir les caractères ajoutés, y compris le caractère nul de fin. Sinon, cela peut entraîner un dépassement de mémoire et des comportements indéfinis.
- Comportement avec une chaîne source vide : Si la chaîne de caractères source est vide (c'est-à-dire qu'elle commence par un caractère nul \0), strncat n'ajoute rien à la chaîne destination, même si n est supérieur à zéro. Toutefois, le caractère nul sera tout de même ajouté à la fin de la chaîne destination si la source est vide.
- Utilisation sécurisée : Bien que strncat soit souvent utilisée pour éviter les dépassements de mémoire, elle peut toujours être source d'erreurs si le nombre de caractères à copier n'est pas bien contrôlé. De plus, il est important de se rappeler qu'elle ne vérifie pas si la chaîne destination est déjà correctement terminée par un \0, ce qui peut causer des erreurs si la chaîne destination n'est pas bien formée.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
Gladir.comVoir également
Langage de programmation - C - Référence de procédures et fonctions - strcat
Langage de programmation - C++ - Référence de procédures et fonctions - strncat
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 261.
Dernière mise à jour : Mardi, le 28 juillet 2015