logo

funkciji strdup() in strndup() v C/C++

The strdup() in strndup() funkcije se uporabljajo za podvajanje niza.
strdup():
Sintaksa: char *strdup(const char *s);
Ta funkcija vrne kazalec na niz bajtov z ničelnim zaključkom, ki je dvojnik niza, na katerega kaže s . Pridobljeni pomnilnik se izvede dinamično z uporabo malloc in ga je zato mogoče sprostiti z uporabo free().
Vrne kazalec na podvojeni niz s .
Spodaj je implementacija C, ki prikazuje uporabo funkcije strdup() v C:

C








niz v celo število
// 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;> }>



>

>

Izhod:

GeeksForGeeks>

strndup():
sintaksa: char *strndup(const char *s, size_t n);
Ta funkcija je podobna strdup(), vendar kvečjemu kopira n bajtov.
Opomba : Če je s daljši od n, se kopira samo n bajtov, na koncu pa se doda NULL (' ').
Spodaj je implementacija C, ki prikazuje uporabo funkcije 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;> }>

>

>

Izhod:

Geeks>

Oglejmo si razlike v obliki tabele -:

strdup() strndup()
1. Uporablja se za vrnitev kazalca na bajtni niz z ničelnim zaključkom, Uporablja se za vrnitev kazalca na bajtni niz z ničlo
2. Njegova sintaksa je -:
char * strdup( const char *str1);

Njegova sintaksa je -:

char *strndup( const char *str, velikost_t velikost);

3. Opredeljena je v naslovna datoteka Opredeljena je v naslovna datoteka
4. Za podvojitev je potreben samo en parameter, ki je kazalec na bajtni niz z ničlo

Potrebuje dva parametra, ki sta -:
1.kazalec na ničelno končan bajtni niz za podvajanje

2. največje število bajtov za kopiranje iz str

5. Njegova vrnjena vrednost je kazalec na novo dodeljeni niz. Če je prišlo do napake, vrne ničelni kazalec.

Referenca: Linux man (7)