Anzahl der Elemente eines (char *)-Arrays ermitteln
-
strlen() macht genau das gleiche.
KurtEdit: natürlich nur wenn die Elemente von typ char sind.
-
bloodshower schrieb:
Die folgende ist leider nicht auf Array von Character-Pointer anwendbar:
IMHO meint er char **.
-
prolog schrieb:
bloodshower schrieb:
Die folgende ist leider nicht auf Array von Character-Pointer anwendbar:
IMHO meint er char **.
Dann ist sein code aber falsch
Kurt
Edit: aber wahrscheinlich hast du recht.
-
Hi,
wieso ist sein code dann falsch ?
-
Hab mich verrannt. Sorry
Kurt
-
Hi,
japp dacht ich mir, ich bin da auch erst drüber gestolpert. Ich dachte zunächst er meint strings aber die sind ja 0-terminiert und nicht NULL-terminiert. Da hab ich dann noch mal gelesen. Aber nun erstmal abwarten was der OP noch sagt.
-
@Prolog: Wenn du recht hast ( höchstwahrscheinlich ) dann legt der OP mal auf Verdacht hin ein array von pointern auf strings an und weist den einzelnen Elementen dann irgendwann einen Wert zu. Da wäre es doch am Einfachsten dabei gleich mitzuzählen.
Kurt
-
Hi,
japp das hab ich mir auch gedacht, hab ich auch im ersten post geschrieben. Aber wer weiss warums nich geht. Mal schauen.
-
bloodshower schrieb:
for (counter = 0; array[counter] != NULL; counter++);
wäre man: strlen(3) nicht einfacher?
bloodshower schrieb:
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
Hat vielleicht jemand eine bessere Lösung?
wenn man ein array hat, dann geht so, aber wenn a kein Array sondern ein Zeiger ist, z.b. dynamisch alloziert, dann denke ich, dass es in die Hose geht, weil sizeof(a) dann sizeof(datentyp*) wäre.
-
Hallo
und danke erst mal für Eure Antworten.
@prolog, @ZuK: Das Array mit den string-Zeigern wird zur Laufzeit vom Benutzer ständig erweitert bzw. reduziert. Die Elemente müssen dann nachgezählt werden, um Datentypen für ein Menü in der selben Anzahl zu allozieren. Das beste wäre, die Anzahl der Elemente nach jeder Benutzereingabe jeweils mitzuzählen. Eine Struktur mit der Anzahl ist dann am sinnvollsten:
typedef struct string_array { char **string; int length; } string_array_t
@supertux: strlen() zählt doch die Anzahl der Zeichen, nicht die Anzahl der Zeiger.
Gruß
Michael