strcpy   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 15 juin 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
strcpy, strncpy - Copier une chaîne  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <string.h>

char *strcpy (char *dest, const char *src);

char *strncpy (char *dest, const char *src, size_t n);
 



DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La fonction strcpy() copie la chaîne pointée par src (y compris le caractère « \0 » final) dans la chaîne pointée par dest. Les deux chaînes ne doivent pas se chevaucher. La chaîne dest doit être assez grande pour accueillir la copie.

La fonction strncpy() est identique, sauf que seuls les n premiers octets de src sont copiés. Avertissement : S'il n'y a pas d'octet nul dans les n premiers octets de src, la chaîne résultante ne disposera pas d'octet nul final.

Dans le cas où la longueur de src est inférieure à n, la fin de dest sera remplie avec des octets nuls.

Une implémentation simple de strncpy() pourrait être :


char*
strncpy(char *dest, const char *src, size_t n){
    size_t i;

    for (i = 0 ; i < n && src[i] != '\0' ; i++)
        dest[i] = src[i];
    for ( ; i < n ; i++)
        dest[i] = '\0';

    return dest;
}
 



VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Les fonctions strcpy() et strncpy() renvoient un pointeur sur la chaîne destination dest.  



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
SVr4, 4.3BSD, C89, C99.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Certains programmeurs considèrent strncpy() comme inefficace et propice aux erreurs. Si le programmeur sait (par exemple, en incluant du code pour le tester !) que la taille de dest est supérieure à la longueur de src, il peut utiliser strcpy().

S'il n'y a pas de caractère nul de terminaison dans les n premiers caractères de src, strncpy() produit dans dest une chaîne sans caractère nul final. Souvent, les programmeurs préviennent cette erreur en forçant le caractère final comme suit :


strncpy(buf, str, n);
if (n > 0)
    buf[n - 1]= '\0';
 



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Si la chaîne destination de strcpy() n'est pas assez grande (c'est-à-dire si le programmeur est stupide ou paresseux et n'a pas verifié la taille avant la copie), tout peut arriver ! Le débordement de chaîne de caractères de longueur fixée est l'une des techniques préférées des pirates. Les caractères en excès peuvent en effet déborder dans une zone de code ou de pile, et être interprétés comme des instructions, qui seront exécutées avec l'UID du programme. Il s'agit d'un moyen classique d'obtenir un accès « root » avec les programmes Set-UID système.  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
bcopy(3), memccpy(3), memcpy(3), memmove(3), wcscpy(3), wcsncpy(3)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 9 novembre 1996 et révisée le 29 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 strcpy ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
CONFORMITÉ
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:49:34, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional