Strdup
strdup este o funcție de limbaj de programare C non-standard care creează o copie a șirului specificat terminat cu nul pe heap (folosind malloc ) și returnează un pointer către acesta. Free trebuie apelat pentru a elibera spațiul folosit de copia creată . Caracteristica a apărut în BSD , este inclusă în POSIX , dar nu face parte din standardele ANSI/ISO, deși este acceptată de aproape toate compilatoarele.
Funcția
Prototipul este descris în fișierul antet string.h:
char* strdup (const char *src);
- src este un pointer către șirul sursă.
Valoarea returnată
Un indicator către o copie a șirului. Dacă alocarea memoriei eșuează, nu se creează nicio copie și funcția returnează NULL.
Exemplu de utilizare
#include <șir.h>
#include <stdio.h> /* pentru printf() */
#include <malloc.h> /* gratuit() */
charbuf [ 1024 ] ;
char * arr [ 300 ];
int main ()
{
int i , k ;
scanf ( "%d \n " , & k );
dacă ( k > 300 ) k = 300 ;
/* citește k linii și adună-le */
pentru ( i = 0 ; i < k ; i ++ ) {
fgets ( buf , strlen ( arr [ i ]), stdin );
arr [ i ] = strdup ( buf );
}
/* imprima */
pentru ( i = 0 ; i < k ; i ++ ) printf ( "linia %3d -> %s \n " , i + 1 , arr [ i ]);
/* șterge memoria */
pentru ( i = 0 ; i < k ; i ++ ) liber ( arr [ i ]);
returnează 0 ;
}
Link -uri