Количество символов в масивах двумерного массива

Я хочу посчитать количество символов в масивах двумерного массива, но у меня получается ошибка, что я делаю не так? Как это сделать без никаких библиотек?

int     return_length(char **argv)
{
    int i;
    int j;
    int k;

    i = 0;
    j = 0;
    k = 0;
    while (argv[i][0])
    {
        j = 0;
        while (argv[i][j])
        {
            k++;
            j++;
        }
        i++;
    }
    return (k);
}

int main()
{
    char **argv;
    char man[7] = "123";
    char man1[20] = "456";
    char man2[20] = "123";
    char man3[20] = "123";

    argv = (char**)malloc(sizeof(char*) * 4);
    argv[0] = man;
    argv[1] = man1;
    argv[2] = man2;
    argv[3] = man3;
    int n = return_length(argv);
    printf("%d\n", n);
}

Ответы (1 шт):

Автор решения: Mikhailo

Вот два варианта. Первый - с указателем-ограничителем, второй - с указанием числа строк.

int return_length1(char** argv) {
    int len = 0;

    for (int i = 0; argv[i]; ++i)
        for (int j = 0; argv[i][j]; ++j, ++len);

    return len;
    }

int return_length2(char** argv, int size) {
    int len = 0;

    for (int i = 0; i < size; ++i)
        for (int j = 0; argv[i][j]; ++j, ++len);

    return len;
    }

int main() {
    char** argv;
    char man[7] = "123";
    char man1[20] = "456";
    char man2[20] = "123";
    char man3[20] = "123";
    argv = (char**)malloc(sizeof(char*) * 5);
    argv[0] = man;
    argv[1] = man1;
    argv[2] = man2;
    argv[3] = man3;
    argv[4] = NULL;
    int n = return_length1(argv);
    printf("%d\n", n);
    n = return_length2(argv, 4);
    printf("%d\n", n);
    }
→ Ссылка