Подтвердить что ты не робот

Поиск длины массива символов в C

Каков способ в C, чтобы кто-то мог найти длину массива символов?

Я с радостью соглашусь с psuedo-кодом, но не прошу прощения, если они захотят:)

4b9b3361

Ответ 1

Если массив char null завершен,

char chararray[10];
size_t len = strlen(chararray);

Ответ 2

Если у вас есть массив, вы можете найти количество элементов в массиве, разделив размер массива в байтах на размер каждого элемента в байтах:

char x[10];
int elements_in_x = sizeof(x) / sizeof(x[0]);

Для конкретного случая char, так как sizeof(char) == 1, sizeof(x) даст тот же результат.

Если у вас есть указатель на массив, то нет способа найти количество элементов в массиве с указателем. Вы должны сами следить за этим. Например, данный:

char x[10];
char* pointer_to_x = x;

нет способа сказать только из pointer_to_x, что он указывает на массив из 10 элементов. Вы должны сами отслеживать эту информацию.

Существует множество способов сделать это: вы можете либо сохранить количество элементов в переменной, либо закодировать содержимое массива таким образом, чтобы вы могли каким-то образом получить его размер, проанализировав его содержимое (это фактически то, завершенные строки: они помещают символ '\0' в конец строки, чтобы вы знали, когда заканчивается строка).

Ответ 3

Привет, хотя приведенные выше ответы в порядке, вот мой вклад в ваш вопрос.

//returns the size of a character array using a pointer to the first element of the character array
int size(char *ptr)
{
    //variable used to access the subsequent array elements.
    int offset = 0;
    //variable that counts the number of elements in your array
    int count = 0;

    //While loop that tests whether the end of the array has been reached
    while (*(ptr + offset) != '\0')
    {
        //increment the count variable
        ++count;
        //advance to the next element of the array
        ++offset;
    }
    //return the size of the array
    return count;
}

В функции main вы вызываете размер функции, передавая адрес первого элемента вашего массива. Например:

char myArray[] = {'h', 'e', 'l', 'l', 'o'};
printf("The size of my character array is: %d\n", size(&myArray[0]));

Все лучшее

Ответ 4

Если вы хотите, чтобы длина массива символов использовала sizeof(array)/sizeof(array[0]), если вы хотите, чтобы длина строки использовалась strlen(array).

Ответ 5

Вы можете использовать strlen

strlen(urarray);

Вы можете запрограммировать его самостоятельно, чтобы понять, как он работает.

size_t my_strlen(const char *str)
{
  size_t i;

  for (i = 0; str[i]; i++);
  return i;
}

если вы хотите размер массива, то вы используете sizeof

char urarray[255];
printf("%zu", sizeof(urarray));

Ответ 6

Для этого также существует компактная форма, если вы не хотите полагаться на strlen. Предполагая, что массив символов, который вы рассматриваете, является "msg":

  unsigned int len=0;
  while(*(msg+len) ) len++;

Ответ 7

Говоря "массив символов", вы имеете в виду строку? Как "привет" или "хахаха это строка символов".

В любом случае используйте strlen(). Прочтите немного об этом, там много информации об этом, например здесь.