This blog post has been published on 2011-03-03 and may be out of date.
Hier einige Möglichkeiten, einen String zu kopieren … :-)
#include <stdio.h>
#include <string.h>
/* --- 1. strcpy mit Arrays --- */
char *strcpy1(char ziel[], const char quelle[]) {
int zahl = 0;
// solange Zeichen von der Quelle vorhanden sind,
// also quelle[zahl] ungleich 0 ist ...
// (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
while(quelle[zahl]) {
// der Buchstabe aus dem Quell-Array wird
// an die selbe Stelle ([zahl]) im Ziel-Array geschrieben
ziel[zahl] = quelle[zahl];
// zahl wird um 1 erhöht (zahl=zahl+1)-> nächster Buchstabe
zahl++;
}
// der neue Sting wird abgeschlossen
ziel[zahl] = '\0';
return(ziel);
}
/* --- 2. strcpy mit Arrays --- */
char *strcpy2(char ziel[], const char quelle[]) {
int zahl = 0;
// solange der Buchstabe aus dem Quell-Array an die selbe Stelle ([zahl])
// im Ziel-Array geschrieben werden kann, also quelle[zahl] ungleich 0 ist ...
// (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
while((ziel[zahl] = quelle[zahl]))
// zahl wird um 1 erhöht (zahl=zahl+1) -> nächster Buchstabe
zahl++;
return(ziel);
}
/* --- 3. strcpy mit Zeigern --- */
char *strcpy3(char *ziel, const char *quelle) {
// solange der Buchstabe vom Quell-Zeiger auf die selbe Stelle
// vom Ziel-Zeiger zeigt ...
// (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
while((*ziel = *quelle)) {
// Zeiger um einen erhöhen -> nächste Speicherstelle -> nächster Buchstabe
ziel++;
quelle++;
}
return(ziel);
}
/* --- 4. strcpy mit Zeigern --- */
char *strcpy4(char *ziel, const char *quelle) {
// solange der Buchstabe vom Quell-Zeiger auf die selbe Stelle
// vom Ziel-Zeiger zeigt, so werden diese jedesmal um 1 erhöht ...
// (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
while((*ziel++ = *quelle++));
return(ziel);
}
int main(void) {
char *gruss = "Hallo Welt";
char gruss1[100];
char gruss2[100];
char gruss3[100];
char gruss4[100];
char gruss5[100];
/* --- 1. strcpy mit Arrays --- */
strcpy1(gruss1, gruss);
printf("%s\n", gruss1);
/* --- 2. strcpy mit Arrays --- */
strcpy2(gruss2, gruss);
printf("%s\n", gruss2);
/* --- 3. strcpy mit Zeigern --- */
strcpy3(gruss3, gruss);
printf("%s\n", gruss3);
/* --- 4. strcpy mit Zeigern --- */
strcpy4(gruss4, gruss);
printf("%s\n", gruss4);
/* --- 5. strcpy -> <string.h> --- */
strcpy(gruss5, gruss);
printf("%s\n", gruss5);
return(0);
}