Definition | #include <string.h> char *strncpy(char *s1, const char *s2, size_t n);
Enthält die Zeichenkette s2 weniger als n Zeichen, wird nur in der Länge von s2 ( 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.
|
Hinweise |
Da Bei sich überlappenden Speicherbereichen ist das Verhalten undefiniert. |
Beispiel 1 | Kopiert die gesamte Zeichenkette s2 in die Zeichenkette s1 (wie die Funktion #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