strdup, strndup, strdupa, strndupa - powielenie łańcucha
Standardowa biblioteka C (
libc,
-lc)
#include <string.h>
char *strdup(const char *s);
char *strndup(const char s[.n], size_t n);
char *strdupa(const char *s);
char *strndupa(const char s[.n], size_t n);
strdup():
_XOPEN_SOURCE >= 500
|| /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
strndup():
Od glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Przed glibc 2.10:
_GNU_SOURCE
strdupa(),
strndupa():
_GNU_SOURCE
Funkcja
strdup() zwraca wskaźnik do nowego łańcucha,
który stanowi kopię łańcucha
s.
Pamięć dla nowego łańcucha jest przydzielana za
pomocą
malloc(3) i może być zwolniona za
pomocą
free(3).
Funkcja
strndup() jest podobna, lecz kopiuje co najwyżej
n
znaków. Jeśli
s jest dłuższe niż
n, kopiowane jest tylko
n znaków i dodawany jest
kończący znak null ('\0').
strdupa() i
strndupa() są podobne, ale korzystają z
alloca(3) do przydzielania pamięci na bufor.
On success, the
strdup() function returns a pointer to the duplicated
string. It returns NULL if insufficient memory was available, with
errno set to indicate the error.
- ENOMEM
- Nie można przydzielić dostatecznej
ilości pamięci potrzebnej dla kopii
łańcucha.
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
strdup(), strndup(), strdupa(),
strndupa() |
Bezpieczeństwo wątkowe |
MT-Safe |
strdup() jest zgodne z SVr4, 4.3BSD, POSIX.1-2001.
strndup() jest
zgodna z POSIX.1-2008.
strdupa() i
strndupa() są
rozszerzeniami GNU.
alloca(3),
calloc(3),
free(3),
malloc(3),
realloc(3),
string(3),
wcsdup(3)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Andrzej Krzysztofowicz <
[email protected]>, Robert
Luberda <
[email protected]> i Michał Kułach
<
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]