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

BEZEICHNUNG

       strcpy, strncpy - kopiert eine Zeichenkette

ÜBERSICHT

       #include <string.h>

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

       char *strncpy(char *Ziel, const char *Quelle, size_t n);

BESCHREIBUNG

       Die  Funktion  strcpy()  kopiert  die  Zeichenkette,  auf  die  der  Zeiger  Quelle  zeigt, inklusive des
       abschließenden Null-Bytes ('\0') an die Stelle, auf die Ziel zeigt. Die Zeichenketten dürfen  sich  nicht
       überlappen  und  die  Zielzeichenkette  Ziel muss groß genug sein, um die Kopie aufzunehmen. Vorsicht vor
       Pufferüberläufen! (Siehe FEHLER)

       Die Funktion strncpy() arbeitet ähnlich, allerdings werden maximal n Byte von  Quelle  kopiert.  Warnung:
       Ist  kein Null-Byte innerhalb der ersten n Byte von Quelle, wird die Zeichenkette in Ziel nicht durch ein
       Null-Byte abgeschlossen.

       Ist die Länge von Quelle  kleiner  als  n,  schreibt  strncpy()  zusätzliche  Null-Bytes  nach  Ziel,  um
       sicherzustellen, dass insgesamt n Byte geschrieben werden.

       Eine einfache Implementierung von strncpy() ist:

           char *
           strncpy(char *Ziel, const char *Quelle, size_t n)
           {
               size_t i;

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

               return Ziel;
           }

RÜCKGABEWERT

       Die Funktionen strcpy() und strncpy() geben einen Zeiger auf die Zielzeichenkette Ziel zurück.

KONFORM ZU

       SVr4, 4.3BSD, C89, C99.

ANMERKUNGEN

       Einige  Programmierer  halten  strncpy() für ineffizient und fehleranfällig. Wenn der Programmierer weiß,
       dass die Größe von Ziel größer  ist  als  die  Länge  von  Quelle  (indem  er  Code  verwendet,  der  das
       überprüft!), kann strcpy() benutzt werden.

       Eine  gültige  (und  beabsichtigte)  Anwendung  von strncpy() ist es, eine C-Zeichenkette in einen Puffer
       fester Länge zu kopieren und zugleich zweierlei zu garantieren: der Puffer läuft  nicht  über  und  nicht
       benutzte  Bytes  im  Zielpuffer  werden auf Null gesetzt. (Vielleicht um Informationslecks zu verhindern,
       wenn der Puffer auf Medien geschrieben oder  mittels  einer  IPC-Technik  (Interprozesskommunikation)  zu
       einem anderen Prozess übertragen werden soll.)

       Wenn  kein  abschließendes  Null-Byte  innerhalb  der  ersten  n Bytes von Quelle enthalten ist, erstellt
       strncpy() eine nicht abgeschlossene Zeichenkette in Ziel. Sie können den Abschluss durch  etwas  wie  das
       Folgende erzwingen:

           strncpy(buf, str, n);
           if (n > 0)
               buf[n - 1]= '\0';

       (Die  obige  Technik ignoriert natürlich die Tatsache, dass die in Quelle enthaltenden Informationen beim
       Kopieren nach Ziel verloren gehen.)

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

           size_t strlcpy(char *ziel, const char *quelle, size_t groesse);

       Diese Funktion ähnelt strncpy(), aber sie kopiert höchstens groesse-1  Byte  zum  ziel,  fügt  immer  ein
       abschließendes  Null-Byte  hinzu  und  füllt das Ziel nicht mit (weiteren) Null-Bytes auf. Diese Funktion
       behebt einige der Probleme von strcpy() und strncpy(), aber der Aufrufende muss sich mit der  Möglichkeit
       von  Datenverlust  befassen,  wenn  groesse zu klein ist. Der Rückgabewert der Funktion ist die Länge der
       quelle, mit der die Verkürzung leicht erkannt werden kann: wenn der Rückgabewert größer als  oder  gleich
       der groesse ist, wurde verkürzt. Wenn Datenverlust nicht auftreten darf, muss der Aufrufende entweder die
       Argumente  vor  dem  Aufruf  oder  den Rückgabewert der Funktion prüfen. strlcpy() ist nicht in der Glibc
       vorhanden und nicht von POSIX  standardisiert,  sondern  ist  unter  Linux  über  die  Bibliothek  libbsd
       verfügbar.

FEHLER

       Wenn  die  Zielzeichenkette beim Aufruf von strcpy() nicht groß genug ist, kann alles Denkbare passieren.
       Der Überlauf von Zeichenkettenpuffern mit fester Länge ist eine beliebte Cracker-Technik, um vollständige
       Kontrolle über einen Rechner zu erlangen. Immer, wenn ein Programm Daten aus einem Puffer liest  oder  in
       ihn  schreibt,  muss  das Programm zuerst überprüfen, ob es genug freien Platz gibt. Das kann überflüssig
       sein, wenn Sie beweisen können, dass ein Überlauf unmöglich ist, aber  seien  Sie  vorsichtig:  Programme
       können im Lauf der Zeit geändert werden. Und plötzlich wird das Unmögliche möglich.

SIEHE AUCH

       bcopy(3),  memccpy(3),  memcpy(3),  memmove(3),  stpcpy(3),  stpncpy(3), strdup(3), string(3), wcscpy(3),
       wcsncpy(3)

KOLOPHON

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the  project,  and
       information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite  wurde  von  Markus Schmitt <fw@math.uni-sb.de>, Tobias
       Quathamer  <toddy@debian.org>,  Helge  Kreutzmann  <debian@helgefjell.de>  und  Martin  Eberhard  Schauer
       <Martin.E.Schauer@gmx.de> 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>.

GNU                                               19. Juli 2012                                        STRCPY(3)