Provided by: manpages-de-dev_4.27.0-1_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 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;
           }

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

Linux man-pages 6.9.1                             15. Juni 2024                                        strcpy(3)