STRNCPY |
Copie les N caractères d'une chaine |
---|---|
Langage C | string.h |
Syntaxe
char *strncpy(const char *dest,const char *source,size_t n); |
Paramètres
Nom | Description |
---|---|
dest | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ recevant le contenu. |
source | Ce paramètre permet d'indiquer la chaîne de caractères ASCIZ à copier dans dest. |
n | Ce paramètre permet d'indiquer le nombre de caractères à copier. |
Description
Cette fonction permet de copier les «n» premiers caractères de la chaîne de caractères «str1» à la chaîne de caractères «str2».
Algorithme
MODULE STRNCPY(dest, src, n) index ← 0 * Copier les caractères de src vers dest jusqu'à n ou jusqu'à '\0' BOUCLE TANT QUE index ≤ n et src[index] ≠ '\0' FAIRE dest[index] ← src[index] index ← index + 1 FIN BOUCLE TANT QUE * Compléter avec des '\0' si src est plus courte que n BOUCLE TANT QUE index < n FAIRE dest[index] ← '\0' index ← index + 1 FIN BOUCLE TANT QUE RETOURNE dest |
Remarques
- Caractère nul (\0) : Si la chaîne de caractères source est plus courte que n, strncpy complète la chaîne de caractères destination avec des caractères nuls jusqu'à ce que n caractères aient été copiés. Cependant, si la source contient au moins n caractères, la chaîne destination ne sera pas null-terminée, ce qui peut causer des comportements indéfinis lors de manipulations ultérieures.
- Comparaison avec strcpy : Contrairement à strcpy, copiant la totalité de la chaîne de caractères source jusqu'au caractère nul, strncpy impose une limite sur le nombre de caractères copiés. Cela permet d'améliorer la sécurité, mais exige de l'utilisateur qu'il gère explicitement la terminaison de la chaîne de caractères destination dans certains cas.
- Utilisation sécurisée : Bien que strncpy limite le nombre de caractères copiés, elle ne garantit pas que la chaîne destination soit terminée par un caractère nul si la source est plus longue que n. Pour garantir une chaîne null-terminée, il est recommandé d'ajouter manuellement dest[n-1] = '\0'; après l'appel à strncpy.
- Complétion par des zéros : Lorsque n est supérieur à la longueur de la chaîne de caractères source, strncpy complète la chaîne de caractères destination avec des caractères nuls pour les positions restantes. Cela peut être utile dans certains contextes (comme pour remplir des tampons), mais peut aussi entraîner un surcoût inutile dans des situations où cela n'est pas nécessaire.
- Applications pratiques : strncpy est souvent utilisée pour copier des sous-chaînes de caractères, pour remplir des tampons dans des structures fixes, ou pour traiter des données provenant de sources externes (comme des fichiers ou des sockets), où la taille des données peut être incertaine.
- Comportement avec des chaînes de caractères vides : Si la chaîne de caractères source est vide (par exemple, elle commence par un caractère nul), strncpy remplira la chaîne de caractères destination avec des caractères nuls jusqu'à atteindre n caractères. Cela peut être utile pour initialiser des tampons à zéro.
- Alternative moderne : En raison de son comportement parfois déroutant, strncpy est souvent remplacée par des fonctions plus sûres comme strlcpy (disponible sur certains systèmes), garantissant la null-termination de la chaîne de caractères de destination tout en limitant la taille copiée. Toutefois, strncpy reste une option standard dans les environnements conformes à la norme C.
Voir é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 - strncpy
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 262.
Dernière mise à jour : Mardi, le 28 juillet 2015