strcpy(3) Library Functions Manual strcpy(3) BEZEICHNUNG stpcpy, strcpy, strcat - eine Zeichenkette kopieren oder verketten BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include char *stpcpy(char *restrict Ziel, const char *restrict Quelle); char *strcpy(char *restrict Ziel, const char *restrict Quelle); char *strcat(char *restrict Ziel, const char *restrict Quelle); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): stpcpy(): Seit Glibc 2.10: _POSIX_C_SOURCE >= 200809L Vor Glibc 2.10: _GNU_SOURCE BESCHREIBUNG stpcpy() strcpy() Diese Funktionen verketten die Zeichenkette, auf die Quelle zeigt, in eine Zeichenkette am Puffer, auf den Ziel zeigt. Der Programmierer muss selbst dafur sorgen, dass der Zielpuffer gross genug ist, was strlen(Quelle) + 1 bedeutet. Lesen Sie in RUCKGABEWERT uber den Unterschied zwischen den beiden Funktionen. strcat() Diese Funktion verkettet die Zeichenkette, auf die Quelle zeigt, nach der Zeichenkette, auf die Ziel zeigt, und zwar so, dass deren beendendes Null-Byte uberschrieben wird. Der Programmierer muss selbst dafur sorgen, dass der Zielpuffer gross genug ist, was strlen(Ziel) + strlen(Quelle) + 1 bedeutet. Eine Implementierung dieser Funktionen konnte wie folgt aussehen: 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; } RUCKGABEWERT stpcpy() Diese Funktionen geben liefern Zeiger auf das beendende Null-Byte der kopierten Zeichenkette zuruck. strcpy() strcat() Diese Funktionen liefern Ziel zuruck. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |stpcpy(), strcpy(), strcat() | Multithread-Fahigkeit | MT-Sicher | +--------------------------------+-------------------------+-----------+ STANDARDS stpcpy() POSIX.1-2008. strcpy() strcat() C11, POSIX.1-2008. STANDARDS stpcpy() POSIX.1-2008. strcpy() strcat() POSIX.1-2001, C89, SVr4, 4.3BSD. WARNUNGEN Die Zeichenketten Quelle und Ziel durfen sich nicht uberlappen. Falls der Zielpuffer nicht gross genug ist, dann ist das Verhalten nicht definiert. Siehe _FORTIFY_SOURCE in feature_test_macros(7). strcat() kann sehr ineffizient sein. Lesen Sie zum Thema Shlemiel the painter . BEISPIELE #include #include #include #include int main(void) { char *p; char *buf1; char *buf2; size_t len, maxsize; maxsize = strlen("Hello ") + strlen("world") + 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, "Hello "); p = stpcpy(p, "world"); p = stpcpy(p, "!"); len = p - buf1; printf("[len = %zu]: ", len); puts(buf1); // "Hello world!" free(buf1); strcpy(buf2, "Hello "); strcat(buf2, "world"); strcat(buf2, "!"); len = strlen(buf2); printf("[len = %zu]: ", len); puts(buf2); // "Hello world!" free(buf2); exit(EXIT_SUCCESS); } SIEHE AUCH strdup(3), string(3), wcscpy(3), string_copying(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Markus Schmitt , Dr. Tobias Quathamer , Helge Kreutzmann , Martin Eberhard Schauer und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 strcpy(3)