Ok, mon C est un peu rouillé mais je me suis dit que je ferais mon prochain (petit) projet en C pour que je puisse polir en arrière et moins de 20 lignes en j'ai déjà une faute de seg.La conversion de char [] [] en caractère char ** provoque un segfault?
Ceci est mon code complet:
#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;
}
Je suis complètement confus quant à la façon dont cela provoque une erreur de segmentation. Que se passe-t-il lors de la diffusion de [][]
à **
!? C'est le seul avertissement que je reçois.
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]’
sont-[][]
et **
vraiment pas les types de pointeur compatibles? Ils semblent être juste une syntaxe pour moi.
"Types de pointeurs non compatibles"? Que voulez-vous dire? Votre type '[] []' est un type * array *, pas un type de pointeur. Pourquoi faites-vous référence à '[] []' comme type de pointeur ??? – AnT
@Andrey c'est un énorme écart évident dans mes connaissances en C. Je comprends complètement les pointeurs mais pas les tableaux. :) – Earlz