Strdup

strdup är en icke-standardiserad C -  programmeringsspråksfunktion som skapar en kopia av den specificerade nollterminerade strängen på heapen (med malloc ) och returnerar en pekare till den. Gratis måste anropas för att frigöra utrymmet som används av den skapade kopian . Funktionen som dök upp i BSD , ingår i POSIX , men är inte en del av ANSI/ISO-standarderna, även om den stöds av nästan alla kompilatorer.

Funktion

Prototypen beskrivs i rubrikfilen string.h:

char* strdup (const char *src);

Returvärde

En pekare till en kopia av strängen. Om minnesallokeringen misslyckas skapas ingen kopia och funktionen returnerar NULL.

Användningsexempel

#include <string.h> #include <stdio.h> /* för printf() */ #include <malloc.h> /* gratis() */ charbuf [ 1024 ] ; char * arr [ 300 ]; int main () { int i , k ; scanf ( "%d \n " , & k ); om ( k > 300 ) k = 300 ; /* läs k rader och addera dem */ för ( i = 0 ; i < k ; i ++ ) { fgets ( buf , strlen ( arr [ i ]), stdin ); arr [ i ] = strdup ( buf ); } /* Skriv ut */ för ( i = 0 ; i < k ; i ++ ) printf ( "rad %3d -> %s \n " , i + 1 , arr [ i ]); /* rensa minne */ för ( i = 0 ; i < k ; i ++ ) fri ( arr [ i ]); returnera 0 ; }

Länkar