i m actually using recursion to find the different ways to reach a point in a 2d array from a fixed given point. i have to choose a start and target point randomly, i can only move right and down(i m choosing the start and end point according to that) i know that at every step i have to cll the same function 2 times, one for right and another time for moving down. further, i have to print the path only if it has more than 1 prime number, hence i have created a isprime function as well.

there is no error in my code, but i m getting "stack smashing detected." problem

what i have done in my code

1 i have made a n*n matrix with randomly filled values in it.

2 i have chosen the start and the target/end point.

3 i have made another matrix such that its start element is the start and the last element is the target/end

4 i have made an array int path[pnt+1], where pnt = 0 initially.

5 called a function move, with x,y(size of the array), array itself, pnt,i,j(i and j are the start index), i1,j1 (i1 and j1 are the target index), pnt, and finally path array

here is my entire code with comments

int prime(int a){

int i=2,flag=0;

for(i;i<a;i++){

if(a%i==0){

flag=1;

break;

}

}

if(flag==1)

return 0;

else

return 1;

}

void move(int x,int y,int ar[x][y],int i,int j,int pnt,int path[pnt+1],int i1,int j1)

{

if(i==i1&&j==j1){

//if start is same as target, it will check the prime in the path

int pcnt=0;

for(int a=0;a<pnt;a++){

if(prime(path[a])==1)

pcnt++;

if(pcnt>1){

for(int b=0;b<pnt;b++){

printf("%d ",path[b]); //printing of the path

}

printf("\n");

break;

}

}

}

else{

if(j+1<y){ //for moving right

path[pnt]=ar[i][j+1];

int pnt1=pnt+1;

move(x,y,ar,i,j+1,pnt1,path,i1,j1); //passing j+1 as j

move(x,y,ar,i,j+1,i1,j1);

}

if(i+1<x){

//for moving down

path[pnt]=ar[i+1][j];

int pnt1=pnt+1;

move(x,y,ar,i+1,j,pnt1,path,i1,j1); //passing i+1 as i

move(x,y,ar,i+1,j,i1,j1);

}

}

}

int main(){

int n=7+rand()%6;

int arp[n][n],a,b; //initial array

for(a=0;a<n;a++){ //giving random values n printing the initial array

for(b=0;b<n;b++){

arp[a][b]=10+rand()%90;

printf("%d ",arp[a][b]);

}

printf("\n");

}

int i=0+rand()%(n-3),path[1]; //choosing the start point

int j=0+rand()%(n-3);

int i1=i+2+rand()%(n-1-i-1); //choosing the end point

int j1=j+2+rand()%(n-1-j-1);

printf("\n\n%d(%d, %d) %d(%d, %d)\n\n",arp[i][j],i,j,arp[i1][j1],i1,j1); //printing the start and end point index

int pnt=0;

int x=i1-i+1, y=j1-j+1;

int ar[i1-i+1][j1-j+1];

for(a=0;a<=(i1-i);a++){ //creating another array with start as first and target as its last element

for(b=0;b<=(j1-j);b++){

ar[a][b]=arp[i+a][j+b];

printf("%d ",ar[a][b]);

}

printf("\n");

}

move(x,y,ar,i,j,pnt,path,i1,j1); //calling the function

return 0;

}

//please help me in debugging my code