temp Variablen
-
Hallo,
die folgende Funktion soll eine Kopie der Zeichenkette scr an die Zeichenkette dest hängen und anschließend dest als Funktionswert zurückliefern.
// Das char-Feld, das als aktueller Parameter fuer dest uebergeben wird, // muss mindestens strlen(dest)+strlen(src)+1 Zeichen aufnehmen koennen. char *my_strcat(char *dest, const char *src) { char *temp = dest; // Ende von dest suchen // Die Anweisung "while(*dest++);" koennen wir hier nicht verwenden, // weil dest dann wegen des Post-Inkrement-Operators nicht auf das Null-Byte // verweisen wuerde, sondern auf das unmittelbar dahinter liegende Zeichen. while(*dest) dest++; // src ans Ende von dest kopieren while(*dest++ = *src++) ; return temp; }
Hab zwei Fragen zu dieser Funktion.
1.) Warum ist es überhaupt nötig den Zeiger temp zu definieren? Könnte ich nicht einfach return dest schreiben?
2.) Ist es üblich bei einer while Schleife ohne Rumpf den ; erst in die nächste Zeile zu schreiben?
-
-
weil dest nach der weilschleife am ende der zeichenkette ist
-
das ist jedem selbst überlassen
-
-
Mir ist da grade noch ne Fragen eingefallen.
Das char-Feld, das als aktueller Parameter fuer dest uebergeben wird,
muss mindestens strlen(dest)+strlen(src)+1 Zeichen aufnehmen koennen.warum eigentlich noch +1?
-
Hallo,
+1 wegen dem String-Ende-Zeichen ('\0').
Dieses ist bei C-Strings wichtig, da ansonsten über den Speicher hinaus gelesen/geschrieben werden könnte.Caipi.