do6dm hat geschrieben:Ich weiß glaub jetzt was du meinst.^^ Meine Funktion macht zwar das gleiche wie die strcpy Funktion, allerdings macht sie es nicht gleich.
Gleichheit zu einer anderen Funktion ist kein Kriterium, im Regelfall programmiert man ja auch nicht vorhandenes nach.
Das Kritierium ist, dass a) ein richtiges Ergebnis dabei herumkommt - das hattest Du ja bereits erreicht - und b) dass dieses Ergebnis mit möglichst minimalen Rechenaufwand erreicht wird (unter Berücksichtigung der Lesbarkeit des Codes) und c) dass der Code gut wartbar (lesbar, veränderbar, wiederverwertbar) ist.
Die Eigenschaften b) und c) wurden von Deinem Code nicht erfüllt.
do6dm hat geschrieben:
Wenn ich das richtig sehe, kopiert ja die originale strcpy solange, bis ein \0 vorkommt.
Hier hab ich mal was anderes geschrieben, das ist glaub besser:
my_strcpy ist auf Deinem Level top, die würde ich so akzeptieren.
Vielleicht die letzte Zuweisung ist unschön: Du weißt, dass src
== '\0' ist, es ist also Mehraufwand die '\0' nochmals von src zu lesen. Du kannst dest also gleich auf '\0' setzen.
Du kopierst in main weiterhin einen längeren String auf ein zu kurzes Array, aber das ist ein anderes Problem.
In C gibt es noch genug zu lernen, Du kannst also my_strcpy nochmal deutlich beschleunigen, wenn Du auf die Array-Zugriffe verzichtest. Da muss man allerdings dann fragen, ob Du soweit schon bist. Von daher folgendes zum 'Mal gesehen haben' und später auch zum Auswendig können, weil es quasi wie eine Floskel in der Sprache C ist.
Code: Alles auswählen
char * my_strcpy(char *dest, const char *src)
{
while( *dest++ = *src++ );
return dest;
}
Je nach CPU geht noch mehr, aber da verlassen wir den Rahmen, den C/C++ ausspannt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.