strdup, strndup, strdupa, strndupa - Dupliquer une chaîne
Bibliothèque C standard (
libc,
-lc)
#include <string.h>
char *strdup(const char *s);
char *strndup(const char s[.n], size_t n);
char *strdupa(const char *s);
char *strndupa(const char s[.n], size_t n);
strdup() :
_XOPEN_SOURCE >= 500
|| /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19 : */ _BSD_SOURCE || _SVID_SOURCE
strndup() :
Depuis la glibc 2.10 :
_POSIX_C_SOURCE >= 200809L
Avant la glibc 2.10 :
_GNU_SOURCE
strdupa(),
strndupa() :
_GNU_SOURCE
La fonction
strdup() renvoie un pointeur sur une nouvelle chaîne
de caractères qui est dupliquée depuis
s. La
mémoire occupée par cette nouvelle chaîne est obtenue en
appelant
malloc(3), et peut (et doit) donc être
libérée avec
free(3).
La fonction
strndup() est identique, mais ne copie au plus que
n octets. Si
s est plus grande que
n, seuls
n octets sont copiés et l'octet NULL de fin
(« \0 ») est ajouté.
strdupa et
strndupa sont similaires, mais utilisent
alloca(3) pour allouer le tampon.
En cas de succès, la fonction
strdup() renvoie un pointeur sur la
chaîne dupliquée. NULL est renvoyé s'il n'y avait pas
assez de mémoire et
errno est défini pour indiquer
l'erreur.
- ENOMEM
- Mémoire disponible insuffisante pour dupliquer la
chaîne.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
strdup(), strndup(), strdupa(),
strndupa() |
Sécurité des threads |
MT-Safe |
strdup() est conforme à SVr4, 4.3BSD, POSIX.1-2001.
strndup() est conforme à POSIX.1-2008.
strdupa() et
strndupa() sont des extensions GNU.
alloca(3),
calloc(3),
free(3),
malloc(3),
realloc(3),
string(3),
wcsdup(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Frédéric Hantrais <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]