Deberá saber qué función realmente espera y modificar la interfaz en consecuencia. Si se espera una matriz bidimensional (char [N][M]
) la interfaz correcta sería:
extern int docx(char *,char*[M]);
que es diferente de:
extern int docx(char*, char**);
En el primer caso la función estaría esperando un puntero en un bloque contiguo de memoria que contiene N*M
caracteres (&p[0][0]+M == &p[1][0]
y (void*)&p[0][0]==(void*)&p[0]
), mientras que en el segundo caso esperará un puntero en un bloque de memoria que contiene N
punteros a bloques de memoria que pueden o no ser contiguos (&p[0][0]
y &p[1][0]
no están relacionados y p[0]==&p[0][0]
)
// case 1
ptr ------> [...M][0123.........M]...[0123.........M]
// case 2
ptr ------> 0 [ptr] -------> "abcde"
1 [ptr] -------> "another string"
...
N [ptr] -------> "last string"
gracias. usted proporciona un buen material. – ambika