Länge eines Strings zur Laufzeit ermitteln - Wie?

09/05/2008 - 14:29 von onlinefloh | Report spam
Moin NG,

Ich steh grad vor nem Problemchen, in der Art, daß ich eine Funktion mit
einem String füttern will, dessen Lànge beim Kompilieren noch nicht
bekannt ist.

Gedacht war das ungefàhr so:

void Funktion(char[] Zeichenkette){
int Laenge;
Laenge=ermittle_Laenge(Zeichenkette);
sende(Zeichenkette, Laenge);
}

Wobei die Funktion sende() darauf besteht, auch die Lànge der
Zeichenkette serviert zu bekommen. Das Problem besteht darin, das die
zu sendenden Zeichenketten erst zur Laufzeit des Programmes erstellt
werden und so auch erst zur Laufzeit ihre Lànge ermittelt werden kann.

Soweit ich das verstanden habe, bringt mich ein sizeof(Zeichenkette) da
auch nicht weiter, da das vom Compiler beim übersetzen ersetzt würde.

Gibt's da ne elegantere Möglichkeit als stumpf durchzuzàhlen?

Gruß
Florian
 

Lesen sie die antworten

#1 Rainer Weikusat
09/05/2008 - 14:49 | Warnen spam
(Florian E. Teply) writes:
Ich steh grad vor nem Problemchen, in der Art, daß ich eine Funktion mit
einem String füttern will, dessen Lànge beim Kompilieren noch nicht
bekannt ist.

Gedacht war das ungefàhr so:

void Funktion(char[] Zeichenkette){
int Laenge;
Laenge=ermittle_Laenge(Zeichenkette);
sende(Zeichenkette, Laenge);
}

Wobei die Funktion sende() darauf besteht, auch die Lànge der
Zeichenkette serviert zu bekommen. Das Problem besteht darin, das die
zu sendenden Zeichenketten erst zur Laufzeit des Programmes erstellt
werden und so auch erst zur Laufzeit ihre Lànge ermittelt werden kann.

Soweit ich das verstanden habe, bringt mich ein sizeof(Zeichenkette) da
auch nicht weiter, da das vom Compiler beim übersetzen ersetzt würde.

Gibt's da ne elegantere Möglichkeit als stumpf durchzuzàhlen?



Es gibt grundsaetzlich keine 'elegantere Moeglichkeit' eine (noch) unbekannte
Anzahl von Dinge zu ermitteln, als diese Dinge zu zaehlen. Sobald man
sie einmal gezaehlt hat, kann man versuchen, sich das Resultat zu
merken, um zukuenftiges Zaehlen vermeiden zu koennen, aber nicht bevor
man sie gezaehlt hat.

Ähnliche fragen