Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       strcat, strncat - hängt zwei Zeichenketten aneinander

ÜBERSICHT

       #include <string.h>

       char *strcat(char *dest, const char *src);

       char *strncat(char *dest, const char *src, size_t n);

BESCHREIBUNG

       Die Funktion strcat() hängt die Zeichenkette src an die Zeichenkette dest an, überschreibt
       dabei das Null-Byte ('\0') am Ende von dest und fügt ein  neues  abschließendes  Null-Byte
       an.  Die  Zeichenketten  dürfen  nicht  überlappen  und  dest  muss genügend Platz für das
       Ergebnis haben. Falls dest nicht groß genug ist, ist das Programmverhalten unvorhersehbar;
       Pufferüberläufe sind ein beliebter Angriffspfad für sichere Programme.

       Die Funktion strncat() ist ähnlich, aber sie

       *  bearbeitet höchstens n Bytes von src; und

       *  src  muss  nicht  mit  einem  Null-Byte  abgeschlossen sein, falls es n oder mehr Bytes
          enthält.

       Wie auch bei strcat() endet die resultierende Zeichenkette mit einem Null-Byte.

       Wenn src n oder mehr Bytes enthält, schreibt strncat() n+1 Bytes  nach  dest  (n  von  src
       sowie   das   abschließende   Null-Byte).   Daher  muss  die  Größe  von  dest  wenigstens
       strlen(dest)+n+1 Zeichen sein.

       Eine einfache Implementierung von strncat() könnte so aussehen:

           char *
           strncat(char *Ziel, const char *Quelle, size_t n)
           {
               size_t Ziel_len = strlen(Ziel);
               size_t i;

               for (i = 0 ; i < n && Quelle[i] != '\0' ; i++)
                   Ziel[Ziel_len + i] = Quelle[i];
               Ziel[Ziel_len + i] = '\0';

               return Ziel;
           }

RÜCKGABEWERT

       Die  Funktionen  strcat()  und  strncat()  geben  einen  Zeiger  auf   die   resultierende
       Zeichenkette dest zurück.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├────────────────────┼───────────────────────┼─────────┤
       │strcat(), strncat() │ Multithread-Fähigkeit │ MT-Safe │
       └────────────────────┴───────────────────────┴─────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

ANMERKUNGEN

       Einige Systeme (die BSDs, Solaris und andere) stellen die folgende Funktion bereit:

           size_t strlcat(char *dest, const char *src, size_t size);

       Diese  Funktion  fügt  die  null-terminierte Zeichenkette src an die Zeichenkette dest an,
       kopiert dabei höchstens size-strlen(dest)-1 Zeichen von src  und  fügt  dem  Ergebnis  ein
       Null-Byte  an,  wenn  nicht  size  kleiner als strlen(dest) ist. Diese Funktion behebt das
       Pufferüberlauf-Problem  von  strcat(),  aber  der  Aufrufende  muss  sich  noch  mit   der
       Möglichkeit  eines  Datenverlusts  befassen, wenn size zu klein ist. Die Funktion gibt die
       Länge der Zeichenkette zurück, die strlcat() zu erzeugen versuchte; wenn der  Rückgabewert
       größer  als  oder gleich size ist, kam es zu Datenverlust. Wenn Datenverlust von Bedeutung
       ist, muss der Aufrufende entweder vor dem Aufruf die Argumente oder nach  dem  Aufruf  den
       Rückgabewert  prüfen.  strlcat()  ist  nicht  in  Glibc  vorhanden  und  nicht  von  POSIX
       standardisiert, sondern ist unter Linux über die Bibliothek libbsd verfügbar.

SIEHE AUCH

       bcopy(3), memccpy(3), memcpy(3), strcpy(3), string(3), strncpy(3), wcscat(3), wcsncat(3)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser  Handbuchseite  wurde  von  Markus  Schmitt  <fw@math.uni-
       sb.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 <debian-l10n-german@lists.debian.org>.