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

NAZWA

       strcat, strncat - połączenie dwóch łańcuchów

SKŁADNIA

       #include <string.h>

       char *strcat(char *dest, const char *src);

       char *strncat(char *dest, const char *src, size_t n);

OPIS

       Funkcja  strcat()  dołącza  łańcuch  src  do  łańcucha  dest,  nadpisując znak null ('\0')
       kończący dest i dodając znak null na końcu wyniku. Łańcuchy nie mogą na siebie nachodzić a
       łańcuch  dest  musi  zawierać  dostateczną  ilość miejsca na wynik. Jeśli dest nie zawiera
       wystarczającej  ilości  miejsca,  to  zachowanie  programu  jest  nieprzewidywalne,   gdyż
       występuje  przepełnienie  bufora,  które  jest  najbardziej popularnym sposobem atakowania
       bezpiecznych programów.

       Funkcja strncat() jest podobna, z wyjątkiem tego, że

       *  użyje co najwyżej n bajtów z src oraz

       *  src nie musi być zakończony znakiem null, jeśli zawiera n lub więcej bajtów.

       Tak jak w przypadku strcat() wynikowy łańcuch w dest jest zawsze zakończony znakiem null.

       Jeśli src zawiera n lub więcej bajtów, to strncat() zapisze n+1  w  dest  (n  z  src  plus
       kończący bajt null). Dlatego też rozmiar dest musi wynosić co najmniej strlen(dest)+n+1.

       Prosta implementacja strncat() mogłaby wyglądać tak:

           char*
           strncat(char *dest, const char *src, size_t n)
           {
               size_t dest_len = strlen(dest);
               size_t i;

               for (i = 0 ; i < n && src[i] != '\0' ; i++)
                   dest[dest_len + i] = src[i];
               dest[dest_len + i] = '\0';

               return dest;
           }

WARTOŚĆ ZWRACANA

       Funkcje strcat() i strncat() zwracają wskaźnik do wynikowego łańcucha dest.

ATRYBUTY

   Wielowątkowość (patrz pthreads(7))
       Funkcje strcat() i strncat() są bezpieczne dla wątków.

ZGODNE Z

       SVr4, 4.3BSD, C89, C99.

UWAGI

       Niektóre systemy (BSD, Solaris i inne) zawierają następującą funkcję:

           size_t strlcat(char *dest, const char *src, size_t size);

       Funkcja  dołączą  zakończony  znakiem null łańcuch src do łańcucha dest, kopiując z src co
       najwyżej size-strlen(dest)-1 znaków i dodając kończący  znak  null,  chyba  że  size  jest
       mniejsze  od  strlen(dest).  Funkcja rozwiązuje problem przepełnienia bufora występujący w
       strcat(), jednakże program wywołujący wciąż musi obsłużyć możliwość utraty  danych,  jeśli
       size  jest  za  małe. Funkcja zwraca długość łańcucha, który strlcat() próbowało utworzyć;
       jeśli wartość zwrócona jest większa lub równa size,  to  część  danych  została  utracona.
       Jeśli  utrata  danych  ma  znaczenie,  to program wywołujący musi albo sprawdzać argumenty
       przed wywołaniem, albo sprawdzać wartość zwracaną. strlcat() nie jest obecna w glibc i nie
       jest opisana w standardzie POSIX, jednak jest dostępna w Linuksie w bibliotece libbsd.

ZOBACZ TAKŻE

       bcopy(3), memccpy(3), memcpy(3), strcpy(3), string(3), strncpy(3), wcscat(3), wcsncat(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.