strdup() og strndup() funksjoner i C/C++

De strdup() og strndup() funksjoner brukes til å duplisere en streng.
strdup():
Syntaks: char *strdup(konst char *s);
Denne funksjonen returnerer en peker til en null-terminert byte-streng, som er et duplikat av strengen pekt på av s . Minnet som oppnås gjøres dynamisk ved å bruke malloc, og det kan derfor frigjøres ved å bruke free() .
Den returnerer en peker til den dupliserte strengen s .
Nedenfor er C-implementeringen for å vise bruken av strdup()-funksjonen i C:

C




// C program to demonstrate strdup()> #include> #include> int> main()> {> > char> source[] => 'GeeksForGeeks'> ;> > // A copy of source is created dynamically> > // and pointer to copy is returned.> > char> * target = strdup(source);> > printf> (> '%s'> , target);> > return> 0;> }>

Produksjon:

GeeksForGeeks 

strndup():
syntaks: char *strndup(konst char *s, størrelse_t n);
Denne funksjonen ligner på strdup(), men kopierer på det meste n bytes.
Merk : Hvis s er lengre enn n, kopieres bare n byte, og en NULL (' ') legges til på slutten.
Nedenfor er C-implementeringen for å vise bruken av strndup()-funksjonen i C:

C




// C program to demonstrate strndup()> #include> #include> int> main()> {> > char> source[] => 'GeeksForGeeks'> ;> > // 5 bytes of source are copied to a new memory> > // allocated dynamically and pointer to copied> > // memory is returned.> > char> * target = strndup(source, 5);> > printf> (> '%s'> , target);> > return> 0;> }>

Produksjon:

Geeks 

La oss se forskjellene i en tabellform -:

strdup() strndup()
1. Den brukes til å returnere en peker til en nullterminert bytestreng, Den brukes til å returnere en peker til en nullterminert bytestreng
2. Syntaksen er -:
char * strdup( const char *str1 );

Syntaksen er -:

char *strndup( const char *str, size_t size );

3. Det er definert i header-fil Det er definert i header-fil
4. Det tar bare én parameter som er pekeren til den nullterminerte bytestrengen for å duplisere

Det krever to parametere som er -:
1.peker til den nullterminerte bytestrengen for å duplisere

2. maks antall byte å kopiere fra str

5. Returverdien er pekeren til den nylig tildelte strengen. Den returnerer en null-peker hvis det oppstod en feil.

Henvisning: Linux mann (7)