strdup(3) powielenie łańcucha

Other Alias

strndup, strdupa, strndupa

SKŁADNIA

#include <string.h>


char *strdup(const char *s);

char *strndup(const char *s, size_t n);
char *strdupa(const char *s);
char *strndupa(const char *s, size_t n);

Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

strdup():

_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

strndup():

Od glibc 2.10:
_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700
Przed glibc 2.10:
_GNU_SOURCE

strdupa(), strndupa(): _GNU_SOURCE

OPIS

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. Są one dostępne wyłącznie, gdy używany jest pakiet GNU GCC, i dotyczą ich te same ograniczenia, które opisano w alloca(3).

WARTOŚĆ ZWRACANA

Funkcja strdup() zwraca wskaźnik do skopiowanego łańcucha. Zwraca NULL, gdy nie jest dostępna dostateczna ilość pamięci, i ustawia errno, wskazując na przyczynę błędu.

BŁĘDY

ENOMEM
Nie można przydzielić dostatecznej ilości pamięci potrzebnej dla kopii łańcucha.

ZGODNE Z

strdup() jest zgodne z SVr4, 4.3BSD, POSIX.1-2001. strndup() jest zgodna z POSIX.1-2008. strdupa() i strndupa() są rozszerzeniami GNU.

O STRONIE

Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Andrzej Krzysztofowicz (PTM) <[email protected]> i Robert Luberda <[email protected]>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.71 oryginału.