Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

strncpy - Zeichenkette kopieren

&pagelevel(4)&pagelevel

Definition

#include <string.h>

char *strncpy(char *s1, const char *s2, size_t n);

strncpy kopiert maximal n Zeichen der Zeichenkette s2 in die Zeichenkette s1.

Enthält die Zeichenkette s2 weniger als n Zeichen, wird nur in der Länge von s2 (strlen + 1) kopiert.

Enthält die Zeichenkette s2 n Zeichen (exklusive Nullbyte) oder mehr, ist die Zeichenkette s1 nicht automatisch mit dem Nullbyte abgeschlossen.

Enthält die Zeichenkette s1 mehr als n Zeichen und das letzte kopierte Zeichen aus s2 ist nicht das Nullbyte, bleiben ggf. restliche Daten in s1 erhalten.

Returnwert

Zeiger auf die Ergebniszeichenkette s1.

strncpy schließt s1 nicht automatisch mit dem Nullbyte ab.

Hinweise

strncpy überprüft nicht, ob s1 groß genug für das Ergebnis ist!

Da strncpy die Ergebniszeichenkette nicht automatisch mit dem Nullbyte abschließt, kann es häufig notwendig sein, s1 explizit mit einem Nullbyte abzuschließen. Das ist z.B. der Fall, wenn nur ein Teilstück aus s2 kopiert wird und auch s2 kein Nullbyte enthält.

Bei sich überlappenden Speicherbereichen ist das Verhalten undefiniert.

Beispiel 1

Kopiert die gesamte Zeichenkette s2 in die Zeichenkette s1 (wie die Funktion strcpy).

#include <stdio.h>
#include <string.h>
int main(void)
{
    int n;
    char s1[20];
    char s2[20];
    printf("Bitte s2 (max. 19 Zeichen) eingeben\n");
    scanf("%s", s2);
    printf("s1: %s\n", strncpy(s1, s2, (strlen(s2) + 1)));
    return 0;
}

Beispiel 2

Kopiert nur ein Teilstück (10 Zeichen) von s2 nach s1. Die Ergebniszeichenkette wird explizit mit dem Nullbyte abgeschlossen.

#include <stdio.h>
#include <string.h>
int main(void)
{
  char *s1 = "                      ";
  char *s2 = "Peter geht schwimmen !";
  strncpy(s1, s2, 10);
  *(s1 + 10) = '\0';
  printf("s1: %s\n", s1);    /* Inhalt von s1: "Peter geht" */
  return 0;
}

Beispiel 3

Kopiert nur ein Teilstück (5 Zeichen) von s2 nach s1. Die restlichen Daten in s1 bleiben erhalten.

#include <stdio.h>
#include <string.h>
int main(void)
{
  char *s1 = "Xaver geht arbeiten !";
  char *s2 = "Peter geht schwimmen !";
  strncpy(s1, s2, 5);
  printf("s1: %s\n", s1);    /* Inhalt von s1: "Peter geht arbeiten !" */
  return 0;
}

Siehe auch   strcpy, strlen