array
-
hallo,
kann mir jemand sagen wie ich bei einem array, dass folgendermassen initialiert wurde:int i = {121,223,3444.....};
mir den gesamtindex anzeigen lassen kann, bzw. wieviel integer zahlen initialisiert wurden.
Dasselbe moechte ich auch bei einem array vom typ charchar *[] = {string1, string2 .....};
mir anzeigen lassen.
-
Also im ersten Fall müsste folgendes funktionieren:
sizeof(i)/sizeof(int)
-
#include <stdio.h> int main() { int a[]={1,2,3,4,5}; int anzahl, i; anzahl = (sizeof(a)/sizeof(int)); for(i=0; i<anzahl;i++) printf("%i\n", a[i]); return 0; }
-
hallo,
ok der ersten fall ist klar, kniffliger ist das bei dem char array,weiss da jemand noch eine loesung
-
@petersjo
Wie willst du denn das char Array definieren?
-
Hallo,
#include <string.h> ... char a[] ={"Hallo ", "Welt", "!"}; size_t i; size_t array_size = sizeof a/sizeof (*a); /* Sollte 3 ergeben */ size_t elements = 0; for(i=0;i<array_size;++i) { elements += strlen(a[i]) + 1; }
-
Wie willst du denn das char Array definieren?
??
es soll am anfang initialisiert werden wie oben beschriebenchar *[] = {string1, string2 .....};
da es aber nach bedarf unterschiedlich viele strings sind, moechte ich eine methode, die mir sagt wieviel in mainem array drin sind.
vielleicht hab ich deine frage nicht richtig verstanden?!?
-
char *t[]={"diest", "ist", "ein", "test"}; anzahl_t = (sizeof(t)/sizeof(*t));
-
#include <stdio.h> #include <string.h> int main() { char *a[] ={"Hallo ", "Welt", "!"}; size_t i; size_t array_size = sizeof a/sizeof (*a); /* Sollte 3 ergeben */ size_t elements = 0; for(i=0;i<array_size;++i) { elements += strlen(a[i]) + 1; } printf("%d Byte\n", elements); return 0; }
So ist jetzt richtig
-
@petersjo
Folgendes funktioniert (habs extra ausprobiert):char *a[]={"Das", "ist", "ein", "Test"}; printf("%d", sizeof(a)/sizeof(char *));
Da a ein Array von Zeigern ist, liefert die sizeof(a) den benötigten Speicher für die Zeiger und sizeof(char
liefert die Größe eines Zeigers davon. Benötigter Speicher des ganzen Arrays geteilt durch benötigter Speicher eines Elements davon -> Ganz einfach, oder?
Die Lösung von tobidope dürfte somit auch funktionieren.