BEZEICHNUNG

stpcpy, strcpy, strcat - eine Zeichenkette kopieren oder verketten

BIBLIOTHEK

Standard-C-Bibliothek ( libc, -lc)

ÜBERSICHT

#include <string.h>
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 dafür sorgen, dass der Zielpuffer groß genug ist, was strlen(Quelle) + 1 bedeutet. Lesen Sie in RÜCKGABEWERT über 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 überschrieben wird. Der Programmierer muss selbst dafür sorgen, dass der Zielpuffer groß genug ist, was strlen(Ziel) + strlen(Quelle) + 1 bedeutet.
Eine Implementierung dieser Funktionen könnte wie folgt aussehen:

char *
stpcpy(char *restrict Ziel, const char *restrict Quelle)
{
    char  *p;
p = mempcpy(Ziel, Quelle, strlen(Quelle)); *p = '\0';
return p; }
char * strcpy(char *restrict Ziel, const char *restrict Quelle) { stpcpy(Ziel, Quelle); return Ziel; }
char * strcat(char *restrict Ziel, const char *restrict Quelle) { stpcpy(Ziel + strlen(Ziel), Quelle); return Ziel; }

RÜCKGABEWERT

stpcpy()
Diese Funktionen geben liefern Zeiger auf das beendende Null-Byte der kopierten Zeichenkette zurück.
strcpy()
strcat() Diese Funktionen liefern Ziel zurück.

ATTRIBUTE

Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
Schnittstelle Attribut Wert
stpcpy(), strcpy(), strcat() Multithread-Fähigkeit MT-Safe
 

STANDARDS

stpcpy()
POSIX.1-2008.
strcpy()
strcat() POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

EINSCHRÄNKUNGEN

Die Zeichenketten Quelle und Ziel dürfen sich nicht überlappen.
Falls der Zielpuffer nicht groß 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 <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("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)

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Schmitt <[email protected]>, Dr. Tobias Quathamer <[email protected]>, Helge Kreutzmann <[email protected]>, Martin Eberhard Schauer <[email protected]> und Mario Blättermann <[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer

Recommended readings

Pages related to strcpy you should read also: