EDIT: отредактировано для работы с пользовательским массивом строк. Указатель NULL
указывает конец массива. Хотя при этом объявляется массив из 4 строк, этот метод может использоваться с массивом динамического размера.
#include <stdio.h>
int main()
{
char* custom[4] = { "sleep", "30", "&", NULL };
int last;
for (last = 0; custom[last + 1]; last++);
printf("%i - %s\n", last, custom[last]);
return 0;
}
// ./a.out
// > 2 - &
Чтобы это работало для вас, вам нужно отредактировать вашу программу, чтобы явно включить дополнительную строку NULL
в ваш char**
при ее создании. Без этого индикатора адрес после последней строки не обязательно будет NULL
, поэтому вы можете включить мусор в счетчик или вызвать ошибку сегментации.