Op dinsdag 16 april 2002 17:23 schreef dixon het volgende:
Hoe vraag je het aantal rijen in een meervoudige array op? Dus niet hoeveel je er zelf declareert, maar hoeveel er in gebruik zijn... Bij bijvoorbeeld
char test[2][5] =
{
{'T','e','s','t'},
{'B','l','a','a'}
};
kan je met strlen(test[0]) het aantal chars in test[0]opvragen. 4 dus. Ik wil het aantal rijen. 2 dus. Hoe doe ik dit?
'T','e','s','t' gaat segfaulten op strlen() omdat er geen '\0' in de string staat om te terminaten. Ga er nu eens vanuit dat je de lengt van de array wilt, dan doe je dit:
code:
1
| sizeof(test)/sizeof(char*) |
Dit werkt echter niet als je de lijst NULL-terminated maakt of de lijst langer maakt dan het aantal items (pre-allocaten).
Een andere manier is om de derde item in test NULL te maken en hierop te checken voor de length:
code:
1
2
3
4
5
6
| char test[3][5] =
{
{'T','e','s','t','\0'},
{'B','l','a','a','\0'},
NULL
}; |
In dat geval kun je een soort functie maken als
code:
1
2
3
4
5
6
7
| int
array_length (void **array)
{
unsigned int n = 0;
while (array[n]) n++;
return n;
} |
Maar de sizeof() methode is waarschijnlijk simpeler.