strcpy(3)

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

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <string.h>

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

OPIS

strcpy()
    Funkcja kopiuje ł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.

    Jest to równoznaczne z

        stpcpy(dst, src), dst

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.

    Jest to równoznaczne z

        stpcpy(strnul(dst), src), dst

WARTOŚĆ ZWRACANA
Funkcje te zwracają dst.

ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
Interfejs | Atrybut | Wartość
strcpy(), strcat() | Bezpieczeństwo wątkowe | MT-bezpieczne

STANDARDY
C11, POSIX.1-2008.

HISTORIA
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    *buf1;
        size_t  len, size;

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

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

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

        exit(EXIT_SUCCESS);
    }

ZOBACZ TAKŻE
stpcpy(3), strdup(3), string(3), wcscpy(3), string_copying(7)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: 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.