logo

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



konverzia dátumu na reťazec






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

nájsť môj iphone z androidu

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)