Provided by: manpages-pl-dev_0.6-2_all bug

NAZWA

       strdup, strndup, strdupa, strndupa - powielenie łańcucha

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.

ZOBACZ TAKŻE

       alloca(3), calloc(3), free(3), malloc(3), realloc(3), string(3), wcsdup(3)

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) <ankry@mif.pg.gda.pl> i Robert Luberda <robert@debian.org>.

       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.