plucky (3) strcat.3.gz

Provided by: manpages-pl-dev_4.25.1-1_all bug

NAZWA

       stpcpy, strcpy, strcat - kopiuje lub łączy łańcuch znaków

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <string.h>

       char *stpcpy(char *restrict dst, const char *restrict src);
       char *strcpy(char *restrict dst, const char *restrict src);
       char *strcat(char *restrict dst, const char *restrict src);

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

       stpcpy():
           Od glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Przed glibc 2.10:
               _GNU_SOURCE

OPIS

       stpcpy()
       strcpy()
              Funkcje  kopiują  łańcuch, na który wskazuje src, do łańcucha w buforze, na który wskazuje dst. To
              programista jest odpowiedzialny za alokację odpowiednio dużego bufora docelowego tj. strlen(src) +
              1. Różnicę pomiędzy obiema funkcjami opisano w rozdziale WARTOŚĆ ZWRACANA.

       strcat()
              Funkcja  dołącza  łańcuch,  na  który wskazuje src, po łańcuchu, na który wskazuje dst (nadpisując
              jego końcowy bajt null). To programista jest odpowiedzialny za alokację odpowiednio dużego  bufora
              docelowego, tj. strlen(dst) + strlen(src) + 1.

       Implementacja tych funkcji mogłaby wyglądać tak:

           char *
           stpcpy(char *restrict dst, const char *restrict src)
           {
               char  *p;

               p = mempcpy(dst, src, strlen(src));
               *p = '\0';

               return p;
           }

           char *
           strcpy(char *restrict dst, const char *restrict src)
           {
               stpcpy(dst, src);
               return dst;
           }

           char *
           strcat(char *restrict dst, const char *restrict src)
           {
               stpcpy(dst + strlen(dst), src);
               return dst;
           }

WARTOŚĆ ZWRACANA

       stpcpy()
              Funkcja zwraca wskaźnik do końcowego bajtu null kopiowanego łańcucha.

       strcpy()
       strcat()
              Funkcje te zwracają dst.

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

       ┌───────────────────────────────────────────────────────────────┬────────────────────────┬───────────────┐
       │InterfejsAtrybutWartość       │
       ├───────────────────────────────────────────────────────────────┼────────────────────────┼───────────────┤
       │stpcpy(), strcpy(), strcat()                                   │ Bezpieczeństwo wątkowe │ MT-bezpieczne │
       └───────────────────────────────────────────────────────────────┴────────────────────────┴───────────────┘

STANDARDY

       stpcpy()
              POSIX.1-2008.

       strcpy()
       strcat()
              C11, POSIX.1-2008.

STANDARDY

       stpcpy()
              POSIX.1-2008.

       strcpy()
       strcat()
              POSIX.1-2001, C89, SVr4, 4.3BSD.

ZASTRZEŻENIA

       Łańcuchy src i dst nie mogą na siebie nachodzić.

       Jeśli   bufor   docelowy  nie  jest  wystarczającą  duży,  zachowanie  jest  niezdefiniowane.  Zob.  opis
       _FORTIFY_SOURCE w podręczniku feature_test_macros(7).

       strcat()  może  być  bardzo  mało  wydajny.  Proszę  zapoznać  się  z  historią   o   malarzu   Shlemielu
       ⟨https://www.joelonsoftware.com/2001/12/11/back-to-basics/⟩.

PRZYKŁADY

       #include <err.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(void)
       {
           char    *p;
           char    *buf1;
           char    *buf2;
           size_t  len, maxsize;

           maxsize = strlen("Witaj ") + strlen("świecie") + strlen("!") + 1;
           buf1 = malloc(sizeof(*buf1) * maxsize);
           if (buf1 == NULL)
               err(EXIT_FAILURE, "malloc()");
           buf2 = malloc(sizeof(*buf2) * maxsize);
           if (buf2 == NULL)
               err(EXIT_FAILURE, "malloc()");

           p = buf1;
           p = stpcpy(p, "Witaj ");
           p = stpcpy(p, "świecie");
           p = stpcpy(p, "!");
           len = p - buf1;

           printf("[len = %zu]: ", len);
           puts(buf1);  // "Witaj świecie!"
           free(buf1);

           strcpy(buf2, "Witaj ");
           strcat(buf2, "świecie");
           strcat(buf2, "!");
           len = strlen(buf2);

           printf("[len = %zu]: ", len);
           puts(buf2);  // "Witaj świecie!"
           free(buf2);

           exit(EXIT_SUCCESS);
       }

ZOBACZ TAKŻE

       strdup(3), string(3), wcscpy(3), string_copying(7)

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia niniejszej strony podręcznika są: Jarosław Beczek <bexx@poczta.onet.pl>,
       Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  ⟨manpages-pl-
       list@lists.sourceforge.net⟩.