funkce strdup() a strndup() v C/C++
The strdup() a strndup() funkce se používají k duplikování řetězce.
strdup() :
Syntaxe: char *strdup(const char *s);
Tato funkce vrací ukazatel na bajtový řetězec ukončený nulou, který je duplikátem řetězce, na který ukazuje s . Získaná paměť se provádí dynamicky pomocí malloc, a proto ji lze uvolnit pomocí free() .
Vrátí ukazatel na duplikovaný řetězec s .
Níže je implementace C, která ukazuje použití funkce 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ýstup:
GeeksForGeeks
strndup() :
syntax: char *strndup(const char *s, velikost_t n);
Tato funkce je podobná strdup(), ale maximálně kopíruje n bajtů.
Poznámka : Pokud je s delší než n, zkopíruje se pouze n bajtů a na konec se přidá NULL (‚‘).
Níže je implementace C, která ukazuje použití funkce 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ýstup:
Geeks
Podívejme se na rozdíly v tabulkové formě -:
| strdup() | strndup() | |
| 1. | Používá se k návratu ukazatele na bajtový řetězec ukončený nulou, | Používá se k vrácení ukazatele na bajtový řetězec ukončený nulou |
| 2. | Jeho syntaxe je -: char * strdup( const char *str1 ); | Jeho syntaxe je -: char *strndup( const char *str, velikost_t velikost ); |
| 3. | Je definován v hlavičkový soubor | Je definován v hlavičkový soubor |
| 4. | K duplikování je potřeba pouze jeden parametr, který je ukazatelem na bajtový řetězec ukončený nulou | Vyžaduje dva parametry, které jsou: 2. maximální počet bajtů ke kopírování ze str |
| 5. | Jeho návratová hodnota je ukazatel na nově přidělený řetězec. | Vrátí nulový ukazatel, pokud došlo k chybě. |
Odkaz: Linux muž (7)