Namespaces
Variants

strdup

From cppreference.net
Definido en el encabezado <string.h>
char * strdup ( const char * str1 ) ;
(TR de memoria dinámica)

Devuelve un puntero a una cadena de bytes terminada en nulo, que es un duplicado de la cadena apuntada por str1 . El puntero devuelto debe pasarse a free para evitar una fuga de memoria.

Si ocurre un error, se devuelve un puntero nulo y errno puede establecerse.

Como todas las funciones del TR de Memoria Dinámica, strdup solo se garantiza que esté disponible si __STDC_ALLOC_LIB__ está definido por la implementación y si el usuario define __STDC_WANT_LIB_EXT2__ a la constante entera 1 antes de incluir string.h .

Contenidos

Parámetros

str1 - puntero a la cadena de bytes terminada en nulo que se va a duplicar

Valor de retorno

Un puntero a la cadena recién asignada, o un puntero nulo si ocurrió un error.

Notas

La función es idéntica a la POSIX strdup .

Ejemplo

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
#include <string.h>
#include <assert.h>
#include <stdlib.h>
int main(void)
{
    const char *s1 = "String";
    char *s2 = strdup(s1);
    assert(strcmp(s1, s2) == 0);
    free(s2);
}

Véase también

(dynamic memory TR)
asigna una copia de una cadena hasta un tamaño especificado
(función)
copia una cadena a otra
(función)
asigna memoria
(función)