Die Bestimmung der Länge einer String-Literal

Gegeben ein array von Zeigern auf string-Literale:

char *textMessages[] = {
    "Small text message",
    "Slightly larger text message",
    "A really large text message that "
    "is spread over multiple lines"
}

Wie wird man bestimmt die Länge eines bestimmten string-literal - sagen die Dritten? Ich habe versucht, mit dem sizeof-Befehl wie folgt:

int size = sizeof(textMessages[2]);

Aber das Ergebnis scheint zu sein, die Anzahl der Zeiger im array, sondern als die Länge der string-literal.

sizeof(textMessages[2]) wird der Ertrag der Größe der char* geben. Es ist rein zufällig, dass sizeof(char*) geschieht, werden 4 auf Ihrem system, und nichts zu tun mit der Anzahl der Elemente im array.
Sollten Sie mithilfe der definition static const char textMesssages[][4] für das array.
Es gibt nur drei Zeiger im array (Hinweis: die string-Verkettung).
Naja, meinen Punkt nicht wirklich liegen, in der Wahl der Anzahl, obwohl ich würde befürworten, dass eine sentinel-Wert.

InformationsquelleAutor Zack | 2012-09-22

Schreibe einen Kommentar