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);

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