_strdup
, , _wcsdup
_mbsdup
Duplique les chaînes.
Important
La fonction _mbsdup
ne peut pas être utilisée dans les applications qui s’exécutent dans Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.
Syntaxe
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Paramètres
strSource
Chaîne source se terminant par Null.
Valeur retournée
Chacune de ces fonctions retourne un pointeur vers l’emplacement de stockage de la chaîne copiée ou NULL
si le stockage ne peut pas être alloué.
Notes
La _strdup
fonction appelle malloc
l’allocation d’espace de stockage pour une copie de strSource
l’espace alloué, puis la copie strSource
vers l’espace alloué.
_wcsdup
et _mbsdup
sont des versions à caractères larges et à caractères multioctets de _strdup
. Les arguments et la valeur de retour sont _wcsdup
des chaînes à caractères larges. Les arguments et la valeur de retour sont _mbsdup
des chaînes de caractères multioctets. Ces trois fonctions se comportent sinon de façon identique.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Étant donné que _strdup
les appels malloc
à allouer de l’espace de stockage pour la copie de strSource
, il est recommandé de toujours libérer cette mémoire en appelant la free
routine sur le pointeur retourné par l’appel à _strdup
.
Si _DEBUG
et _CRTDBG_MAP_ALLOC
sont définis, _strdup
et _wcsdup
sont remplacés par des appels à _strdup_dbg
et _wcsdup_dbg
, pour permettre le débogage des allocations de mémoire. Pour plus d’informations, consultez _strdup_dbg
, _wcsdup_dbg
.
Spécifications
Routine | En-tête requis |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> ou <wchar.h> |
_mbsdup |
<mbstring.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_strdup.c
#include <string.h>
#include <stdio.h>
int main( void )
{
char buffer[] = "This is the buffer text";
char *newstring;
printf( "Original: %s\n", buffer );
newstring = _strdup( buffer );
printf( "Copy: %s\n", newstring );
free( newstring );
}
Original: This is the buffer text
Copy: This is the buffer text
Voir aussi
Manipulation de chaînes
memset
, wmemset
strcat
, , wcscat
_mbscat
strcmp
, , wcscmp
_mbscmp
strncat
, , _strncat_l
, _wcsncat_l
wcsncat
, , _mbsncat
_mbsncat_l
strncmp
, , wcsncmp
_mbsncmp
, ,_mbsncmp_l
strncpy
, , _strncpy_l
, _wcsncpy_l
wcsncpy
, , _mbsncpy
_mbsncpy_l
_strnicmp
, , _wcsnicmp
, _strnicmp_l
_mbsnicmp
, , _wcsnicmp_l
_mbsnicmp_l
strrchr
, , wcsrchr
_mbsrchr
, ,_mbsrchr_l
strspn
, , wcsspn
_mbsspn
, ,_mbsspn_l