_strdup
, , _wcsdup
, _mbsdup
Duplica cadenas.
Importante
_mbsdup
no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Parámetros
strSource
Cadena de origen terminada en NULL.
Valor devuelto
Cada una de estas funciones devuelve un puntero a la ubicación de almacenamiento de la cadena copiada o NULL
si no se puede asignar el almacenamiento.
Comentarios
La _strdup
función llama malloc
a para asignar espacio de almacenamiento para una copia de strSource
y, a continuación, copia strSource
en el espacio asignado.
_wcsdup
y _mbsdup
son versiones de caracteres anchos y multibyte de _strdup
. Los argumentos y el valor devuelto de son cadenas de _wcsdup
caracteres anchos. Los argumentos y el valor devuelto de son cadenas de _mbsdup
caracteres multibyte. Estas tres funciones se comportan exactamente igual.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Dado _strdup
que llama malloc
a para asignar espacio de almacenamiento para la copia de strSource
, se recomienda liberar siempre esta memoria llamando a la free
rutina en el puntero devuelto por la llamada a _strdup
.
Si _DEBUG
se definen _strdup
y _CRTDBG_MAP_ALLOC
y _wcsdup
se reemplazan por llamadas a _strdup_dbg
y _wcsdup_dbg
, para permitir la depuración de asignaciones de memoria. Para más información, vea _strdup_dbg
, _wcsdup_dbg
.
Requisitos
Routine | Encabezado necesario |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> o <wchar.h> |
_mbsdup |
<mbstring.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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
Vea también
Manipulación de cadenas
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