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