Search code examples
carraysstringfunctionstring-length

Problem with finding the length of a string using pointers in a function in c


I got a task from my college which is to find the length of a string using pointers in a function.Here is my code:

#include <stdio.h>
#include <stdlib.h>

#define max 100

int lengthchar(char *array1[])
{
    int a, x = 0;
    for (a = 0; *(array1++) != '\0'; a++)
    {
        x++;
    }
    return x;
}

int main()
{
    char arr1[max];
    int length;

    printf("Enter string\n");
    gets(arr1);

    length = lengthchar(arr1);

    printf("Length=%d", length);

    return 0;
}

But when I give input something bellow:

Enter string: av

Length=9

It shows the wrong length, what's my mistake?


Solution

  • This is because of the way to pass a string pointer as an argument to the function.

    Just change char *array1[] to char *array1 or array1[].

    Have a look at the implementation below:

    int lengthchar(char array1[])
    {
        int a,x=0;
        for(a=0;*(array1++)!='\0';a++)
        {
            x++;
        }
    
       return x;
    }
    

    PS: variable a can be removed by using a while loop.