Provided by: manpages-pl-dev_4.23.1-1_all
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). ┌────────────────────────────────────────────────┬────────────────────────┬───────────────┐ │Interfejs │ Atrybut │ Wartość │ ├────────────────────────────────────────────────┼────────────────────────┼───────────────┤ │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⟩.