How to find number of rows in dynamic 2D char array in C?
Nothing from there.
tried with following code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int k = 97;
void foo(char **a)
{
    int i = 0;
    for(i=0; a[i] != NULL; ++i)
      printf("i = %d\n", i);
}
void strcpyo(char* a, char*b){
    int i=0;
    for(i=0;b[i]!='\0';i++){
        a[i]=b[i];
    }
    a[i]='\0';
}
void strcpym(char* a, char*b){
    int i=0;
    for(i=0;b[i]!='\0';i++);
    memcpy(a,b,i+1);
}
void freee(char** ptr){
int i;
        for(i = 0;i < k; ++i)
        {
            free(ptr[i] );
        }
    free(ptr);
}
void alloc(char ***p)
{
    *p = (char **)malloc(k * sizeof(char *));
    int i,j;
    for(j=0;j<k;j++)
    {
       // for(i = 0;i < j; ++i)
        {
            (*p)[j] = (char *)malloc(11 * sizeof(char));
            strcpy((*p)[j],"paicharan");
        }
        //printf("j = %d ", j);
        //foo(p);
    }
}
int main()
{
    char **p;
    alloc(&p);
#if 0
    char **p = (char **)malloc(k * sizeof(char *));
    int i,j;
    for(j=0;j<k;j++)
    {
        for(i = 0;i < j; ++i)
        {
            p[i] = (char *)malloc(11 * sizeof(char));
            strcpy(p[i],"paicharan");
        }
        printf("j = %d ", j);
        foo(p);
    }
#endif
    foo(p);
    freee(p);
    return 0;
}
The code in #if 0 #endif works perfectly, but if I do create arrays in function alloc(char**) it's giving the wrong answer for odd number of rows in array. Can anybody explain why?
ie. for k= odd number it gives out wrong answer but for even number its correct.
 
     
    