_strdup
, _wcsdup
, _mbsdup
Duplica le stringhe.
Importante
_mbsdup
non può essere utilizzato in applicazioni che vengono eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Parametri
strSource
Stringa di origine con terminazione null.
Valore restituito
Ognuna di queste funzioni restituisce un puntatore alla posizione di archiviazione per la stringa copiata o NULL
se l'archiviazione non può essere allocata.
Osservazioni:
La _strdup
funzione chiama malloc
per allocare spazio di archiviazione per una copia di strSource
e quindi copia strSource
nello spazio allocato.
_wcsdup
e _mbsdup
sono versioni con caratteri wide e caratteri multibyte di _strdup
. Gli argomenti e il valore restituito di sono stringhe di _wcsdup
caratteri wide. Gli argomenti e il valore restituito di sono stringhe di _mbsdup
caratteri multibyte. A parte ciò, queste tre funzioni si comportano in modo identico.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Poiché _strdup
chiama malloc
per allocare spazio di archiviazione per la copia di strSource
, è consigliabile rilasciare sempre questa memoria chiamando la free
routine sul puntatore restituito dalla chiamata a _strdup
.
Se _DEBUG
e _CRTDBG_MAP_ALLOC
sono definiti _strdup
e _wcsdup
vengono sostituiti da chiamate a _strdup_dbg
e _wcsdup_dbg
, per consentire il debug delle allocazioni di memoria. Per altre informazioni, vedere _strdup_dbg
e _wcsdup_dbg
.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> oppure <wchar.h> |
_mbsdup |
<mbstring.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Manipolazione delle stringhe
memset
, wmemset
strcat
, wcscat
, _mbscat
strcmp
, wcscmp
, _mbscmp
strncat
, _strncat_l
, wcsncat
, _wcsncat_l
, _mbsncat
_mbsncat_l
strncmp
, wcsncmp
, _mbsncmp
_mbsncmp_l
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
_mbsncpy_l
_strnicmp
, _wcsnicmp
, _mbsnicmp
, _strnicmp_l
, _wcsnicmp_l
_mbsnicmp_l
strrchr
, wcsrchr
, _mbsrchr
_mbsrchr_l
strspn
, wcsspn
, _mbsspn
_mbsspn_l