Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
strcpy, strncpy - Copier une chaine
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 chaine pointee par src, y compris le
caractere nul (<< \0 >>) final dans la chaine pointee par dest. Les
deux chaines ne doivent pas se chevaucher. La chaine dest doit etre
assez grande pour accueillir la copie.
La fonction strncpy() est identique, sauf qu'au plus n octets de src
sont copies. Attention : s'il n'y a pas de caractere nul dans les n
premiers octets de src, la chaine resultante dans dest ne disposera pas
de caractere nul final.
Si la longueur de src est inferieure a n, strncpy() remplit la fin de
dest avec des caracteres nuls.
Une implementation simple de strncpy() pourrait etre :
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'EE
Les fonctions strcpy() et strncpy() renvoient un pointeur sur la chaine
destination dest.
CONFORMIT'E
SVr4, BSD 4.3, C89, C99.
NOTES
Certains programmeurs considerent strncpy() comme inefficace et propice
aux erreurs. Si le programmeur sait (c'est-a-dire en ajoutant du code
pour effectuer le test !) que la taille de dest est superieure a la
longueur de src, alors strcpy() peut etre utilisee.
S'il n'y a pas d'octet nul de fin dans les n premiers caracteres de
src, strncpy() produit une chaine non terminee dans dest. Les
programmeurs evitent souvent cette erreur en forcant la fin de chaine
de cette facon :
strncpy(buf, str, n);
if (n > 0)
buf[n - 1]= '\0';
BOGUES
Si la chaine de destination d'un strcpy() n'est pas suffisamment
grande, n'importe quoi peut survenir. Un depassement de tampon pour une
chaine de taille fixe est la technique favorite de pirates pour prendre
le controle d'une machine. A chaque fois qu'un programme lit ou copie
des donnees dans un tampon, le programme doit d'abord verifier qu'il y
a suffisamment de place. Ca peut ne pas etre necessaire si vous pouvez
montrer qu'un depassement est impossible, mais faites attention : les
programmes changes au cours du temps, et ce qui etait impossible peut
devenir possible.
VOIR AUSSI
bcopy(3), memccpy(3), memcpy(3), memmove(3), stpcpy(3), string(3),
strdup(3), wcscpy(3), wcsncpy(3)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe 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
Francois et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.