.\" -*- 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 "15 czerwca 2024 r." "Linux man\-pages 6.9.1" 
.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
.P
\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
.P
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.P
\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.
.P
Implementacja tych funkcji mogłaby wyglądać tak:
.P
.in +4n
.EX
char *
stpcpy(char *restrict dst, const char *restrict src)
{
    char  *p;
\&
    p = mempcpy(dst, src, strlen(src));
    *p = \[aq]\[rs]0\[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).
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
.na
.nh
\fBstpcpy\fP(),
\fBstrcpy\fP(),
\fBstrcat\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
.TE
.SH STANDARDY
.TP 
\fBstpcpy\fP()
POSIX.1\-2008.
.TP 
\fBstrcpy\fP()
.TQ
\fBstrcat\fP()
C11, POSIX.1\-2008.
.SH STANDARDY
.TP 
\fBstpcpy\fP()
POSIX.1\-2008.
.TP 
\fBstrcpy\fP()
.TQ
\fBstrcat\fP()
POSIX.1\-2001, C89, SVr4, 4.3BSD.
.SH ZASTRZEŻENIA
Łańcuchy \fIsrc\fP i \fIdst\fP nie mogą na siebie nachodzić.
.P
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).
.P
\fBstrcat\fP() może być bardzo mało wydajny. Proszę zapoznać się z historią o
.UR https://www.joelonsoftware.com/\:2001/12/11/\:back\-to\-basics/
malarzu
Shlemielu
.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
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>
.
.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 .
