Provided by: manpages-de-dev_4.21.0-2_all bug

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.

       ┌───────────────────────────────────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├───────────────────────────────────────────────────────┼───────────────────────┼─────────┤
       │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.

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    *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  <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⟩.