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.

GNU                                                2014-01-20                                          STRCAT(3)