Strdup

strdup es una  función de lenguaje de programación C no estándar que crea una copia de la cadena terminada en cero especificada en el montón (usando malloc ) y le devuelve un puntero. Free debe llamarse para liberar el espacio utilizado por la copia creada . La característica que apareció en BSD , está incluida en POSIX , pero no forma parte de los estándares ANSI/ISO, aunque es compatible con casi todos los compiladores.

Función

El prototipo se describe en el archivo de encabezado string.h:

char* strdup (const char *src);

Valor devuelto

Un puntero a una copia de la cadena. Si falla la asignación de memoria, no se crea ninguna copia y la función devuelve NULL.

Ejemplo de uso

#incluir <cadena.h> #include <stdio.h> /* para printf() */ #include <malloc.h> /* gratis() */ charbuf [ 1024 ] ; char * arr [ 300 ]; int principal () { int i , k ; scanf ( "%d \n " , & k ); si ( k > 300 ) k = 300 ; /* lee k líneas y las suma */ para ( yo = 0 ; yo < k ; yo ++ ) { fgets ( buf , strlen ( arr [ i ]), stdin ); arr [ i ] = strdup ( buf ); } /* imprimir */ for ( i = 0 ; i < k ; i ++ ) printf ( "línea %3d -> %s \n " , i + 1 , arr [ i ]); /* memoria clara */ for ( i = 0 ; i < k ; i ++ ) libre ( arr [ i ]); devolver 0 ; }

Enlaces