plucky (3) stpcpy.3.gz

Provided by: manpages-de-dev_4.25.1-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
       ⟨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⟩.