.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2022 Alejandro Colomar .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strcpy 3 "2 maja 2024 r." "Linux man\-pages 6.8" .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 \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]\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). .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 #include #include #include \& 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 , Robert Luberda i Michał Kułach . .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 .