strcpy(3)

BEZEICHNUNG
strcpy, strcat - eine Zeichenkette kopieren oder verketten

BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT
#include <string.h>

char *strcpy(char *restrict Ziel, const char *restrict Quelle);
char *strcat(char *restrict Ziel, const char *restrict Quelle);

BESCHREIBUNG

strcpy()
    Diese Funktion verkettet 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.

    Sie ist gleichbedeutend mit

        stpcpy(Ziel, Quelle), dst

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.

    Sie ist gleichbedeutend mit

        stpcpy(strnul(Ziel), Quelle), dst

RÜCKGABEWERT
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
strcpy(), strcat() | Multithread-Fähigkeit | MT-Sicher

STANDARDS
C11, POSIX.1-2008.

GESCHICHTE
POSIX.1-2001, C89, SVr4, 4.3BSD.

WARNUNGEN
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 (https://www.joelonsoftware.com/2001/12/11/back-to-basics/).

BEISPIELE
    #include <err.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int
    main(void)
    {
        char    *buf1;
        size_t  len, size;

        size = strlen("Hello ") + strlen("world") + strlen("!") + 1;
        buf1 = malloc(sizeof(*buf1) * size);
        if (buf1 == NULL)
            err(EXIT_FAILURE, "malloc()");
        buf2 = malloc(sizeof(*buf2) * size);
        if (buf2 == NULL)
            err(EXIT_FAILURE, "malloc()");

        strcpy(buf1, "Hello ");
        strcat(buf1, "world");
        strcat(buf1, "!");
        len = strlen(buf1);

        printf("[len = %zu]: ", len);
        puts(buf1);  // "Hello world!"
        free(buf1);

        exit(EXIT_SUCCESS);
    }

SIEHE AUCH
stpcpy(3), strdup(3), string(3), wcscpy(3), string_copying(7)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Schmitt <fw@math.uni-sb.de>, Dr. Tobias Quathamer <toddy@debian.org>, Helge Kreutzmann <debian@helgefjell.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 (debian-l10n-german@lists.debian.org).