Получение высоты массива символов - PullRequest
0 голосов
/ 14 марта 2019

Я хочу получить высоту массива:

main(){
    int a;
    char array[10][10]={
        "45",
        "34",
        "23",
        "12",
    };
    a=strlen(array);
    printf("%d",a);
}

Но когда я использую strlen, он просто показывает длину первой строки, но я хочу знать, как узнать, сколько строк в этоммассив.Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 14 марта 2019

Универсальный способ найти размер массива - sizeof array / sizeof *array.Это дает количество элементов, в вашем случае 10.

Если вы хотите узнать, сколько из 10 содержит правильную строку, вы должны использовать значение часового типа, например, "":

char array[10][10]={
        "45",
        "34",
        "23",
        "12",
        "",
    };

// search for used size of the array
size_t i;
for (i=0; i<10; i++)
{
  if(strcmp(array[i], "")==0)
    break;
}
// here i contains the used size

(Обычно вы бы предпочли иметь массив char* strings[n], где каждая отдельная строка чтения / записи может иметь переменную длину посредством динамического выделения. В этом случае вы бы использовали NULL в качестве значения часового.)

2 голосов
/ 14 марта 2019

Решение 1:

Имейте int, который хранит эти данные для вас, чтобы они были легко доступны в любом месте.

Решение 2:

Напишите функцию, которая подсчитывает строки, примерно так:

int CountRows(array)
{
  int counter = 0;

  while(elementOfArray)
  {
    counter++;
  }

  return counter;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...