C Получить размер массива массива символов - PullRequest
0 голосов
/ 16 апреля 2020

я хочу получить количество элементов в текстовом массиве, ответ должен быть 2

char Text[5][10] = {
    "Big12345",
    "Big54321",
};

я хочу код для подсчета количества элементов в массиве символов

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

В этом конкретном случае, что-либо после инициализаторов будет 0, поэтому:

size_t counter = 0;

while ( Text[counter][0] != 0 )
  counter++;

Но, в общем, C не дает вам хорошего способа сделать это. Вы должны либо отслеживать количество элементов, используемых отдельно, либо использовать значение часового в массиве.

1 голос
/ 16 апреля 2020

Вы ошибаетесь. Количество элементов в массиве - 5. Два элемента имеют непустые строки, а три элемента имеют пустые строки. Но на самом деле пустую строку можно разместить в любом месте массива. Например,

char Text[5][10] = 
{
    "Big12345",
    "",
    "Big54321",
};

Это объявление эквивалентно

char Text[5][10] = 
{
    "Big12345",
    "",
    "Big54321",
    "",
    ""
};

. Вы можете написать функцию, которая определяет, сколько элементов содержит непустые строки. Например,

#include <stdio.h>

size_t count_non_empty( size_t m, size_t n, char s[][n] )
{
    size_t count = 0;

    for ( size_t i = 0; i < m; i++ )
    {
        count += s[i][0] != '\0';
    }

    return count;
}

int main(void) 
{
    char Text[5][10] = 
    {
        "Big12345",
        "",
        "Big54321",
    };

    printf( "There are %zu non-empty elements\n", count_non_empty( 5, 10, Text ) );

    return 0;
}

Вывод программы:

There are 2 non-empty elements
0 голосов
/ 16 апреля 2020

Используйте следующее, чтобы найти количество элементов в вашем массиве, которым назначена строка:

#include <stdio.h>
#include <string.h>

int main()
  {
  char Text[5][10] = {"Big12345",
                      "Big54321",};
  int i, n;

  for(i = 0, n = 0 ; i < 5 ; i++)
    if(strlen(Text[i]) > 0)
      n += 1;

  printf("%d elements have a length > 0\n", n);

  return 0;
  }
...