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