strcpy(3) Library Functions Manual strcpy(3) NAZWA stpcpy, strcpy, strcat - kopiuje lub laczy lancuch znakow BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include 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 kopiuja lancuch, na ktory wskazuje src, do lancucha w buforze, na ktory wskazuje dst. To programista jest odpowiedzialny za alokacje odpowiednio duzego bufora docelowego tj. strlen(src) + 1. Roznice pomiedzy obiema funkcjami opisano w rozdziale WARTOSC ZWRACANA. strcat() Funkcja dolacza lancuch, na ktory wskazuje src, po lancuchu, na ktory wskazuje dst (nadpisujac jego koncowy bajt null). To programista jest odpowiedzialny za alokacje odpowiednio duzego bufora docelowego, tj. strlen(dst) + strlen(src) + 1. Implementacja tych funkcji moglaby wygladac 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; } WARTOSC ZWRACANA stpcpy() Funkcja zwraca wskaznik do koncowego bajtu null kopiowanego lancucha. strcpy() strcat() Funkcje te zwracaja dst. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |stpcpy(), strcpy(), | Bezpieczenstwo watkowe | MT-bezpieczne | |strcat() | | | +---------------------------+--------------------------+---------------+ 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. ZASTRZEZENIA Lancuchy src i dst nie moga na siebie nachodzic. Jesli bufor docelowy nie jest wystarczajaca duzy, zachowanie jest niezdefiniowane. Zob. opis _FORTIFY_SOURCE w podreczniku feature_test_macros(7). strcat() moze byc bardzo malo wydajny. Prosze zapoznac sie z historia o malarzu Shlemielu . PRZYKLADY #include #include #include #include int main(void) { char *p; char *buf1; char *buf2; size_t len, maxsize; maxsize = strlen("Witaj ") + strlen("swiecie") + 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, "swiecie"); p = stpcpy(p, "!"); len = p - buf1; printf("[len = %zu]: ", len); puts(buf1); // "Witaj swiecie!" free(buf1); strcpy(buf2, "Witaj "); strcat(buf2, "swiecie"); strcat(buf2, "!"); len = strlen(buf2); printf("[len = %zu]: ", len); puts(buf2); // "Witaj swiecie!" free(buf2); exit(EXIT_SUCCESS); } ZOBACZ TAKZE strdup(3), string(3), wcscpy(3), string_copying(7) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Jaroslaw Beczek , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.8 2 maja 2024 r. strcpy(3)