String Copy – Strings kopieren in C mit strcpy und strncpy
char * strcpy(char *dest, char *src);
Mit String Copy können wir den Inhalt eines Strings kopieren.
- *dest ist Zeiger auf Ziel-Array
- *src ist Zeiger auf Quell-Array
- Rückgabewert ist char Zeiger auf Ziel-Array
Die Zeiger-Benennungen dest und src stehen für destinantion (Ziel) und source (Quelle). Diese Namen werden in den weiteren Kapiteln noch öfters auftreten.
In diesem Beispiel ist es nicht nötig den Rückgabewert abzufangen.
char textA[5] = "abc"; char textB[5] = "abc"; printf("Text A: %s\nText B: %s\n\n", textA, textB); // konstante Zeichenkette in String B kopieren strcpy(textB, "xyz"); printf("Text A: %s\nText B: %s\n\n", textA, textB); // char-Array B zu char-Array A kopieren strcpy(textA, textB); printf("Text A: %s\nText B: %s\n\n", textA, textB);
Text A: abc Text B: abc Text A: abc Text B: xyz Text A: xyz Text B: xyz
Bestimmte Anzahl von Zeichen kopieren
Mit strncpy kopiert man n Zeichen von src nach dest. Wichtig: Ist die Länge des zu kopierenden Strings kleiner als die Länge des Quell-Strings, wird das Ende-Zeichen im Ziel-String nicht gesetzt. Dies muss also manuell gesetzt werden.
char * strncpy(char *dest, char *src, int n);
char textA[10] = "123456"; char textB[10]; // kopiere in textB 3 Zeichen von textA strncpy(textB, textA, 3); // Ende-Zeichen setzen textB[3] = '\0'; printf("Text A: %s\nText B: %s\n\n", textA, textB);
Text A: 123456 Text B: 123