# Indexzahl eines Arrays ermitteln?



## PHPer (27. Februar 2006)

Hey Leute!

Hab mal ne kleine Frage. Ich lese Text aus ner Textdatei in ein Array ein, dann habe ich z.B.:

arr[0] = { "Zeile 1" };
arr[1] = { "Zeile 2" };
arr[2] = { "Zeile 3" };
arr[3] = { "Zeile 4" };
arr[4] = { "Zeile 5" };

Wie kann ich jetzt ermitteln, wieviele Elemente im Array "arr" gespeichert sind (Also halt 5 in diesem Beispiel)?

Danke Euch schonmal...


----------



## deepthroat (27. Februar 2006)

Hi.

Wie ist denn arr deklariert?

Falls es als vector deklariert ist, kannst du die Anzahl der Elemente mit der Methode size erfahren.

Wenn es als normales Array definiert ist, mußt du die Größe sowieso schon wissen (wie willst du sonst das Array erstellen? du mußt es ja schließlich vorher erstellen bevor du es benutzen kannst.)

PS: Verwende doch bitte die Code Tags und wenn möglich spezifiziere doch die Sprache (C oder C++) am besten gleich im Titel.

Gruß


----------



## PHPer (27. Februar 2006)

Aso, naja, ich hab das jetzt einfach so erstmal:

char arr[100][255] = { "" };

K.a. ob das jetzt richtig ist (bin nicht so erfahren mit C), aber villeicht kannst Du mir da ja gleich noch nen Tip geben, denn ich würde gerne die Größe des Arrays offen lassen, denn letztlich werde ich werder die Länge der Zeilen kennen, noch die Anzahl derer... 

Das mit den Code Tags hab ich mal wieder vergessen. Sorry 

Sprache: C

Lg.


----------



## Tobias K. (27. Februar 2006)

moin


Das ist in C nciht ganz so einfach wie in Php, aber du kannst bei BEdarf ein Array vergrößern und mitzählen wie groß es dann jeweils ist.


mfg
umbrasaxum


----------



## PHPer (27. Februar 2006)

Ja ich weis dass das in C nicht so einfach ist wie in PHP, und genau das bereitet mir ja solche Schwierigkeiten. Hab jetzt evtl. ne Idee wie ich das nun machen könnte. Was mir aber generell noch einfällt als Frage, wenn ich das Array so deklarier:

char arr[200][255] = {""};

Dann habe ich einmal die 200, und einmal die 255. Was ist jetzt eigentlich was? Heißt das jetzt, ich hätte 200 reservierte Element a 255 Zeichen? Oder 255 reservierte Elementa a 200 Zeichen?

Weil wenn ich das jetzt so mach:

char arr[][255] = {""};

Habe ich jetzt unbegrenzt Plätze a 255 Zeichen? Oder habe ich 255 reservierte Plätze mit unbegrenzter Anzahl an Zeichen?

Sry, steig da irgendwie nicht so ganz durch...


----------



## deepthroat (27. Februar 2006)

PHPer hat gesagt.:
			
		

> Ja ich weis dass das in C nicht so einfach ist wie in PHP, und genau das bereitet mir ja solche Schwierigkeiten. Hab jetzt evtl. ne Idee wie ich das nun machen könnte. Was mir aber generell noch einfällt als Frage, wenn ich das Array so deklarier:
> 
> char arr[200][255] = {""};
> 
> Dann habe ich einmal die 200, und einmal die 255. Was ist jetzt eigentlich was? Heißt das jetzt, ich hätte 200 reservierte Element a 255 Zeichen? Oder 255 reservierte Elementa a 200 Zeichen?


Das bedeutet du hast 200 mal 255 Zeichen - also 200 Zeilen die max. 255 Zeichen haben dürfen (inkl. des Terminierungszeichens).



			
				PHPer hat gesagt.:
			
		

> Weil wenn ich das jetzt so mach:
> 
> char arr[][255] = {""};
> 
> Habe ich jetzt unbegrenzt Plätze a 255 Zeichen? Oder habe ich 255 reservierte Plätze mit unbegrenzter Anzahl an Zeichen?


Weder noch. Du hast dann nur ein Array mit 1 Element welches ein Leerstring ist. Die Größe des Arrays wird hierbei aus der Initialisierungsliste ermittelt - und da ist nunmal nur 1 Element drin.

Du kannst die Anzahl der Elemente eines solchen statischen Arrays, also eines Array bei dem zur Kompilierzeit bereits die Größe feststeht folgendermaßen ermitteln:
	
	
	



```
int anz = sizeof(arr)/sizeof(arr[0]);
```
Du kannst es ja ausprobieren was für dein Array da rauskommt.

Gruß


----------

