Would you please tell me the way to correct this kind of error ??

I have thought many many days and I simply cannot solve this . . . .

Code:

void win(Map*initialMap , Map* currentMap , int x , int y){
int i;
int j;
for(i=0; i < currentMap->height ; i++){
// all boxes are pushed into all targets
for(j=0; j < currentMap->width ; j++){
if (currentMap->map2D[y+j][x+i]=='@' && initialMap->map2D[y-j][x-i]=='!' ) <-- error
return ;
}
}
}
int try(Map *initialMap, Map *currentMap, int x, int y, int max_no_of_move, Stack *s) {
int i,j,k;
int result=0;
char q='\0';
char e[4]={NORTH,SOUTH,EAST,WEST};
Map tempmap;
if(max_no_of_move ==0 ) return 0;
win(&initialMap,¤tMap,&x,&y) return 1;
// if not , try each possible directions
for(i=0;i<4;i++){
if ( move_keeper(&initialMap,¤tMap,&x,&y,e[i])) {
clone_map(&tempmap,¤tMap);
result = try ( ¤tMap, &tempmap , x, y , max_no_of_move -1 , &s );
if(result) { return result;
//A solution is found
push(&s,e);
}
else {
q=pop(&s);
for(j=0;j<currentMap->width ; j++) {
for(k=0;k<currentMap->height;k++){
tempmap.map2D[k][j]=currentMap->map2D[k][j];
}}
}
return result;
}
}
}