.
C-, , , play-load .
NULL .
:
#define END_OF_ARRAY "__EOA__"
:
#define END_OF_ARRAY ""
, C- "" !
char array [][8] = {
"1st",
"2nd",
END_OF_ARRAY
}
, ââ:
ssize_t get_array_size(const char (*parray)[][8])
{
ssize_t s = -1;
if (NULL == parray)
{
errno = EINVAL;
}
else
{
s = 0;
while (strcmp((*parray)[s], END_OF_ARRAY))
{
++s;
}
}
return s;
}
:
#define END_OF_ARRAY NULL
#define END_OF_ARRAY "__EOA__"
, NULL.
char * array[] = {
"1st",
"2nd",
END_OF_ARRAY
}
, ââ:
ssize_t get_array_size(const char *** parray)
{
ssize_t s = -1;
if (NULL == parray || NULL == *parray)
{
errno = EINVAL;
}
else
{
s = 0;
while ((*parray)[s] != END_OF_ARRAY)
{
++s;
}
}
return s;
}
:
int main(void)
{
ssize_t result = get_array_size(&array);
if (-1 == result)
{
perror("get_array_size() failed");
}
else
{
size_t size = result;
printf("number of elements: %zu\n", size)
}
return 0;
}
:
#define END_OF_ARRAY NULL
#define END_OF_ARRAY "__EOA__"
, NULL.
char * array[] = {
"1st",
"2nd",
END_OF_ARRAY
}
, ââ:
ssize_t get_array_size(const char ** parray)
{
ssize_t s = -1;
if (NULL == parray)
{
errno = EINVAL;
}
else
{
s = 0;
while (parray[s] != END_OF_ARRAY)
{
++s;
}
}
return s;
}
, , :
int main(void)
{
ssize_t result = get_array_size(array);
if (-1 == result)
{
perror("get_array_size() failed");
}
else
{
size_t size = result;
printf("number of elements: %zu\n", size)
}
return 0;
}