converter char [] [] para char ** causa segfault?
Ok, meu C está um pouco enferrujado, mas imaginei que faria meu próximo (pequeno) projeto em C para que eu pudesse fazer o polimento de volta nele e menos de 20 linhas já tenho uma falha seg.
Este é o meu código completo:
#define ROWS 4
#define COLS 4
char main_map[ROWS][COLS+1]={
"a.bb",
"a.c.",
"adc.",
".dc."};
void print_map(char** map){
int i;
for(i=0;i<ROWS;i++){
puts(map[i]); //segfault here
}
}
int main(){
print_map(main_map); //if I comment out this line it will work.
puts(main_map[3]);
return 0;
}
Estou completamente confuso sobre como isso está causando um segfault. O que está acontecendo ao transmitir a partir de[][]
para**
!? Esse é o único aviso que recebo.
rushhour.c:23:3: warning: passing argument 1 of ‘print_map’ from incompatible pointer type rushhour.c:13:7: note: expected ‘char **’ but argument is of type ‘char (*)[5]’
Estão[][]
e**
tipos de ponteiros realmente não compatíveis? Eles parecem que são apenas sintaxe para mim.