## Finding the length of a Character Array in C

### Question

What is a way in C that someone could find the length of a Character array?

I will happily accept psuedo-code, but am not averse to someone writing it out if they'd like to :)

2010/11/15
1
62
11/15/2010 1:41:56 AM

Provided the char array is `null` terminated,

``````char chararray[10] = { 0 };
size_t len = strlen(chararray);
``````
2020/08/12
82
8/12/2020 3:10:57 PM

If you have an array, then you can find the number of elements in the array by dividing the size of the array in bytes by the size of each element in bytes:

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

For the specific case of `char`, since `sizeof(char) == 1`, `sizeof(x)` will yield the same result.

If you only have a pointer to an array, then there's no way to find the number of elements in the pointed-to array. You have to keep track of that yourself. For example, given:

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

there is no way to tell from just `pointer_to_x` that it points to an array of 10 elements. You have to keep track of that information yourself.

There are numerous ways to do that: you can either store the number of elements in a variable or you can encode the contents of the array such that you can get its size somehow by analyzing its contents (this is effectively what null-terminated strings do: they place a `'\0'` character at the end of the string so that you know when the string ends).

2010/11/15

Hi although the above answers are OK, here's my contribution to your question.

``````//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;
}
``````

In function main you call function size by passing the address of the first element of your array. For example:

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

All the best

2011/12/06

You can use strlen

``````strlen(urarray);
``````

You can code it yourself so you understand how it works

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

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

if you want the size of the array then you use sizeof

``````char urarray[255];
printf("%zu", sizeof(urarray));
``````
2015/02/03

If you want the length of the character array use `sizeof(array)/sizeof(array[0])`, if you want the length of the string use `strlen(array)`.

2017/08/24

There is also a compact form for that, if you do not want to rely on strlen. Assuming that the character array you are considering is "msg":

``````  unsigned int len=0;
while(*(msg+len) ) len++;
``````
2014/05/15