funkcie strdup() a strndup() v C/C++

The strdup() a strndup() funkcie sa používajú na duplikovanie reťazca.
strdup() :
Syntax: char *strdup(const char *s);
Táto funkcia vracia ukazovateľ na bajtový reťazec ukončený nulou, ktorý je duplikátom reťazca, na ktorý ukazuje s . Získaná pamäť sa robí dynamicky pomocou malloc, a preto ju možno uvoľniť pomocou free() .
Vráti ukazovateľ na duplikovaný reťazec s .
Nižšie je implementácia C, ktorá ukazuje použitie funkcie strdup() v 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;> }>

Výkon:

GeeksForGeeks 

strndup() :
syntax: char *strndup(const char *s, veľkosť_t n);
Táto funkcia je podobná funkcii strdup(), ale maximálne kopíruje n bajtov.
Poznámka : Ak je s dlhšie ako n, skopíruje sa iba n bajtov a na koniec sa pridá NULL (‚ ‘).
Nižšie je uvedená implementácia C, ktorá ukazuje použitie funkcie strndup() v 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;> }>

Výkon:

Geeks 

Pozrime sa na rozdiely v tabuľkovej forme -:

strdup() strndup()
1. Používa sa na vrátenie ukazovateľa na bajtový reťazec ukončený nulou, Používa sa na vrátenie ukazovateľa na bajtový reťazec ukončený nulou
2. Jeho syntax je -:
char * strdup( const char *str1 );

Jeho syntax je -:

char *strndup( const char *str, veľkosť_t veľkosť );

3. Je definovaný v hlavičkový súbor Je definovaný v hlavičkový súbor
4. Na duplikovanie stačí jeden parameter, ktorý je ukazovateľom na bajtový reťazec ukončený nulou

Vyžaduje si to dva parametre, a to:
1.ukazovateľ na bajtový reťazec ukončený nulou, ktorý chcete duplikovať

2. maximálny počet bajtov na kopírovanie zo str

5. Jeho návratová hodnota je ukazovateľ na novo pridelený reťazec. Ak dôjde k chybe, vráti nulový ukazovateľ.

Referencia: Linux man (7)