Strdup

strdup er en ikke-standard C - programmeringssprogfunktion  , der opretter en kopi af den angivne null-terminerede streng på heapen (ved hjælp af malloc ) og returnerer en pointer til den. Gratis skal kaldes for at frigøre den plads, der bruges af den oprettede kopi . Funktionen dukkede op i BSD , er inkluderet i POSIX , men er ikke en del af ANSI/ISO-standarderne, selvom den understøttes af næsten alle compilere.

Funktion

Prototypen er beskrevet i header-filen string.h:

char* strdup (const char *src);

Returværdi

En pegepind til en kopi af strengen. Hvis hukommelsesallokering mislykkes, oprettes der ingen kopi, og funktionen returnerer NULL.

Eksempel på brug

#include <string.h> #include <stdio.h> /* for printf() */ #include <malloc.h> /* gratis() */ charbuf [ 1024 ] ; char * arr [ 300 ]; int main () { int i , k ; scanf ( "%d \n " , & k ); hvis ( k > 300 ) k = 300 ; /* læs k linjer og læg dem sammen */ for ( i = 0 ; i < k ; i ++ ) { fgets ( buf , strlen ( arr [ i ]), stdin ); arr [ i ] = strdup ( buf ); } /* Print ud */ for ( i = 0 ; i < k ; i ++ ) printf ( "linje %3d -> %s \n " , i + 1 , arr [ i ]); /* Ryd hukommelse */ for ( i = 0 ; i < k ; i ++ ) fri ( arr [ i ]); returnere 0 ; }

Links