.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright 2022 Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH strcpy 3 "5 lutego 2023 r." "Linux man\-pages 6.03" 
.SH NAZWA
stpcpy, strcpy, strcat \- kopiuje lub łączy łańcuch znaków
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <string.h>\fP
.PP
\fBchar *stpcpy(char *restrict \fP\fIdst\fP\fB, const char *restrict \fP\fIsrc\fP\fB);\fP
\fBchar *strcpy(char *restrict \fP\fIdst\fP\fB, const char *restrict \fP\fIsrc\fP\fB);\fP
\fBchar *strcat(char *restrict \fP\fIdst\fP\fB, const char *restrict \fP\fIsrc\fP\fB);\fP
.fi
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
\fBstpcpy\fP():
.nf
    Od glibc 2.10:
        _POSIX_C_SOURCE >= 200809L
    Przed glibc 2.10:
        _GNU_SOURCE
.fi
.SH OPIS
.TP 
\fBstpcpy\fP()
.TQ
\fBstrcpy\fP()
Funkcje kopiują łańcuch, na który wskazuje \fIsrc\fP, do łańcucha w buforze, na
który wskazuje \fIdst\fP. To programista jest odpowiedzialny za alokację
odpowiednio dużego bufora docelowego tj. \fIstrlen(src) + 1\fP. Różnicę
pomiędzy obiema funkcjami opisano w rozdziale WARTOŚĆ ZWRACANA.
.TP 
\fBstrcat\fP()
Funkcja dołącza łańcuch, na który wskazuje \fIsrc\fP, po łańcuchu, na który
wskazuje \fIdst\fP (nadpisując jego końcowy bajt null). To programista jest
odpowiedzialny za alokację odpowiednio dużego bufora docelowego,
tj. \fIstrlen(dst) + strlen(src) + 1\fP.
.PP
Implementacja tych funkcji mogłaby wyglądać tak:
.PP
.in +4n
.EX
char *
stpcpy(char *restrict dst, const char *restrict src)
{
    char  *p;

    p = mempcpy(dst, src, strlen(src));
    *p = \[aq]\e0\[aq];

    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;
}
.EE
.in
.SH "WARTOŚĆ ZWRACANA"
.TP 
\fBstpcpy\fP()
Funkcja zwraca wskaźnik do końcowego bajtu null kopiowanego łańcucha.
.TP 
\fBstrcpy\fP()
.TQ
\fBstrcat\fP()
Funkcje te zwracają \fIdst\fP.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBstpcpy\fP(),
\fBstrcpy\fP(),
\fBstrcat\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
.TE
.hy
.ad
.sp 1
.SH STANDARDY
.TP 
\fBstpcpy\fP()
POSIX.1\-2008.
.TP 
\fBstrcpy\fP()
.TQ
\fBstrcat\fP()
POSIX.1\-2001, POSIX.1\-2008, C99, SVr4, 4.3BSD.
.SH ZASTRZEŻENIA
Łańcuchy \fIsrc\fP i \fIdst\fP nie mogą na siebie nachodzić.
.PP
Jeśli bufor docelowy nie jest wystarczającą duży, zachowanie jest
niezdefiniowane. Zob. opis \fB_FORTIFY_SOURCE\fP w podręczniku
\fBfeature_test_macros\fP(7).
.PP
\fBstrcat\fP()  can be very inefficient.  Read about
.UR https://www.joelonsoftware.com/\:2001/12/11/\:back\-to\-basics/
Shlemiel the\ painter
.UE .
.SH PRZYKŁADY
.\" SRC BEGIN (strcpy.c)
.EX
#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);
}
.EE
.\" SRC END
.SH "ZOBACZ TAKŻE"
\fBstrdup\fP(3), \fBstring\fP(3), \fBwcscpy\fP(3), \fBstring_copying\fP(7)
.PP
.SH 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>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
