pasar - matriz de caracteres en c
Cómo pasar una matriz 3D de caracteres a una función (3)
Tengo una matriz 3D de tabla de caracteres [] [] [] y quiero pasarla a una función vacía para que pueda hacer cambios en ella. ¿Cómo puedo hacer esto?
void make(char minor[][][]);
.....
char greater[20][30][50];
make(greater);
Supongo que esto no va a funcionar.
EDITAR: Otra pregunta relacionada con esto: Digamos que quiero hacer una función de copia para copiar una cadena en la matriz, ¿cómo debo llamar a strcpy en la función?
void copy(char (*minor)[][])
{ char m[50] = "asdasdasd";
strcpy(minor[][],m);
}
Pase un puntero a una matriz de 2 d:
void make(char (*minor)[30][50]);
...
char greater[20][30][50];
make(greater);
Si quisiera pasar una matriz , como esa, en oposición a una que haya asignado dinámicamente con malloc
(que serían unos pocos niveles de punteros, no matrices reales), cualquiera de los siguientes prototipos funcionarán:
-
void make(char minor[20][30][50])
-
void make(char minor[][30][50])
-
void make(char (*minor)[30][50])
La razón por la que no puedes tener algo como void make(char ***minor)
es porque el minor
solo se descompone en un puntero a una matriz de matrices, no decaerá más de una vez, por así decirlo.
Editar: no es una buena manera, ¡mira los comentarios!
Tendrás que pasar punteros y el tamaño de la matriz,
aquí echar un vistazo a este post Pasar matriz de múltiples dimensiones en c