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