Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.05.2007, 14:07
Felheart



Hi,
wie kann ich die länge eines char arrays bestimmen das auch
zeichen wie '\0' und so enthält ?

char *data = "123456\0\0\07"; //Pointer auf char array

Hier gibt sowohl sizeof() als auch strlen die falsche zahl aus
strlen: 6
sizeof(): 4

Das ist ja beides falsch, der Sting ist ja eigntlich 10 zeichen lang
Also die zahlen von 1 bis 7 und dann noch 3 mal das terminuerungszeichen.

Wie kann ich da die gesamte länge (in diesem fall 10) rauskriegen ?

//edit:

So gehts zuminedst mir sizeof:
char data[] = "123456\0\0\07";

Ich hab aber nur char* und nicht char[].

--


Dieser Beitrag wurde am 16.05.2007 um 14:08 von Felheart bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
16.05.2007, 14:37
hausi



sizeof: Das ist ein Pointer auf einen char, also wird die Grösse des Pointers zurückgegeben (in deinem Fall 4, da 32bit).
strlen: Gibt die Länge des NULL-terminierten Strings zurück, also bis \0 (wie du schon bemerkt hast). Wenn ein String \0 beinhalten soll, dann musst du wohl oder übel auf eine string-Implementation wie z.B. std::string zurückgreifen. Wenn strlen nicht nach \0 suchen würde: Wie sollte er dann wissen, wo der String fertig ist?
sizeof mit char[]: Hier wird der korrekte Wert zurückgegeben, weil das ein array ist.

Lösung: Länge merken, oder eine brauchbare (und gleichzeitig auch sichere) String-Implementation verwenden.

--


Dieser Beitrag wurde am 16.05.2007 um 14:39 von hausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche