Provided by: manpages-pl-dev_4.23.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⟩.