Länge einer Zeichenkette aus Parametern

Orbit

Erfahrenes Mitglied
Hallo,
gibt es eine Möglichkeit in

void leseLaenge(char *c){

}

die Länge der Zeichenkette zu lesen oder muss ich diese als zweiten Parameter übergeben:confused:

Die Funktion
sizeof(*c) gibt genau 1 aus.
Andere Möglichkeit die ich mir denmken könnte, wäre einfach nach der nächsten binären 0 zu suchen. Dabei ist allerdings das Problem dass meine Zeichenkette nicht nur ASCIIS sondern auch zahlen enthält; also dass die 0 auch mal so vorkommt. Also muss ich wohl die Länge als Parameter mitangeben? Hat das einen Sinn?
Es muss doch eine anständige Möglichkeit geben...

Grüße,
Orbit
 
Hi.
Hallo,
gibt es eine Möglichkeit in



die Länge der Zeichenkette zu lesen oder muss ich diese als zweiten Parameter übergeben:confused:

Die Funktion
sizeof(*c) gibt genau 1 aus.
Andere Möglichkeit die ich mir denmken könnte, wäre einfach nach der nächsten binären 0 zu suchen. Dabei ist allerdings das Problem dass meine Zeichenkette nicht nur ASCIIS sondern auch zahlen enthält; also dass die 0 auch mal so vorkommt. Also muss ich wohl die Länge als Parameter mitangeben? Hat das einen Sinn?
Es muss doch eine anständige Möglichkeit geben...
Eine Zeichenkette wird immer durch 0 terminiert. Diese terminierende 0 ist etwas anderes als das Zeichen '0' (entspricht 48 in der ASCII Tabelle). Alle Stringfunktionen arbeiten auf diese Weise. Mit der Standardfunktion strlen kann man dann auch die Länge eines Strings ermittlen.

Gruß
 
Hallo,
dass '0' nicht '\0' ist, ist mir klar. '\0' = 0B0 oder?
Die Zeichenkette die ich übergeben will kann eben auch die binäre 0 enthalten, da ich das ding nicht mit
char *c = "Hallo Welt"
sondern über zahlen fülle.
Da kann es passieren dass da steht c[3] = 0;
Grüße,
Orbit
 
Hallo,
dass '0' nicht '\0' ist, ist mir klar. '\0' = 0B0 oder?
Die Zeichenkette die ich übergeben will kann eben auch die binäre 0 enthalten, da ich das ding nicht mit
char *c = "Hallo Welt"
sondern über zahlen fülle.
Da kann es passieren dass da steht c[3] = 0;
Dann ist es keine Zeichenkette mehr, sondern ein Array von Bytes. Da kannst du dann nicht mehr mit den Stringfunktionen arbeiten und mußt auch die Länge übergeben. (außer du hast ein anderes Zeichen (bzw. Zahlenwert) welches garantiert nicht selbst im Array vorkommt, so dass du das als Terminierung nehmen kannst). Je nachdem wie groß das Array werden kann, ist es evtl. von Vorteil die Länge nicht zu berechnen.

Gruß
 
Zurück