_strdup, _wcsdup, _mbsdup
Duplica las 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 con /ZW.
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 para la cadena copiada o NULL si el almacenamiento no puede estar asignado.
Comentarios
Las llamadas de función malloc de _strdup para asignar espacio de almacenamiento para una copia de strSource y después copian strSource el espacio asignado.
_wcsdup y _mbsdup son versiones de caracteres anchos y multibyte de _strdup. Los argumentos y el valor devuelto de _wcsdup son cadenas de caracteres anchos; los de _mbsdup son cadenas de caracteres multibyte. Estas tres funciones se comportan exactamente igual.
Asignaciones de rutina de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
Dado que _strdup llama malloc para asignar espacio de almacenamiento para la copia de strSource, es recomendable liberar siempre esta memoria llamando a la rutina de libre en el puntero devuelto por la llamada a _strdup.
Si se definen _DEBUG y _CRTDBG_MAP_ALLOC , _strdup y _wcsdup son reemplazados por llamadas a _strdup_dbg y a _wcsdup_dbg para permitir la depuración asignaciones de memoria. Para obtener más información, vea _strdup_dbg, _wcsdup_dbg.
Requisitos
Rutina |
Encabezado necesario |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> o <wchar.h> |
_mbsdup |
<mbstring.h> |
Para obtener información adicional de compatibilidad, vea 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 );
}
Equivalente en .NET Framework
Vea también
Referencia
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