Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       strcpy, strncpy - Copier une chaîne

SYNOPSIS

       #include <string.h>

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

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

DESCRIPTION

       La  fonction strcpy() copie la chaîne pointée par src, y compris le caractère nul (« \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  qu'au  plus  n  octets de src sont copiés.
       Attention : s'il n'y a pas de caractère nul dans les n premiers octets de src,  la  chaîne
       résultante dans dest ne disposera pas de caractère nul final.

       Si  la  longueur  de  src  est  inférieure  à n, strncpy() remplit la fin de dest avec des
       caractères 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

       Les fonctions strcpy() et strncpy() renvoient un pointeur sur la chaîne destination dest.

CONFORMITÉ

       SVr4, BSD 4.3, C89, C99.

NOTES

       Certains programmeurs considèrent strncpy() comme inefficace et propice aux erreurs. Si le
       programmeur sait (c'est-à-dire en ajoutant du code pour effectuer le test !) que la taille
       de dest est supérieure à la longueur de src, alors strcpy() peut être utilisée.

       S'il n'y a pas d'octet nul de fin dans les n premiers caractères de src, strncpy() produit
       une  chaîne  non  terminée  dans  dest.  Les  programmeurs évitent souvent cette erreur en
       forçant la fin de chaîne de cette façon :

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

BOGUES

       Si la chaîne de destination d'un strcpy() n'est pas suffisamment  grande,  n'importe  quoi
       peut  survenir.  Un  dépassement de tampon pour une chaîne de taille fixe est la technique
       favorite de pirates pour prendre le contrôle d'une machine. À chaque fois qu'un  programme
       lit  ou  copie  des  données  dans un tampon, le programme doit d'abord vérifier qu'il y a
       suffisamment de place. Ça peut ne  pas  être  nécessaire  si  vous  pouvez  montrer  qu'un
       dépassement  est  impossible,  mais  faites attention : les programmes changes au cours du
       temps, et ce qui était impossible peut devenir possible.

VOIR AUSSI

       bcopy(3), memccpy(3), memcpy(3), memmove(3), stpcpy(3), strdup(3),  string(3),  wcscpy(3),
       wcsncpy(3)

COLOPHON

       Cette  page  fait partie de la publication 3.32 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction  francophone  au  sein  du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <URL:http://www.blaess.fr/christophe/>   (1996-2003),  Alain  Portal
       <URL:http://manpagesfr.free.fr/> (2003-2006). Nicolas François et l'équipe francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».