003
10.07.2003, 23:37 Uhr
ao
(Operator)
|
@Pablo: Was du da schreibst, stimmt nicht. Oli hat das Array nicht deklariert, sondern mit new alloziert, und die Längenangabe in new kann selbstverständlich ein Ausdruck mit Variablen sein.
Dein Vorschlag mit dem static-Array hat den großen Nachteil, daß bei zwei aufeinanderfolgenden Aufrufen von strmid() der zweite das Ergebnis des ersten überschreibt. Der Anwender muß wissen, daß er das Ergebnis kopieren muß - unpraktisch.
Delete kann man übersehen, auch nicht wirklich gut. Wenn ich keine String-Klasse mit eingebauter Aufräumfunktion verwenden kann, mache ich es immer so, daß der Aufrufer den Speicher anlegt und in die Funktion hineinreicht:
char * strmid (char * dest, const char * src, int len, int offset);
(es werden len Zeichen ab *(src + offset) nach dest kopiert. Der Rückgabewert ist auch dest. Der Aufrufer muß sicherstellen, daß bei dest genügend Speicher zur Verfügung steht. Das ist aber kein Problem, denn er kennt den Wert von len.
ao |