# Homework Help: Segmentation fault 11 help?

1. Oct 13, 2012

### charmedbeauty

1. The problem statement, all variables and given/known data

when I am compiling my code I am getting a segmentation fault when entering in input but I don't know why?

it prints Segmentation fault: 11

2. Relevant equations

3. The attempt at a solution

This is my code I tried looking up what was causing it but couldn't find the reason please help

Code (Text):

void flipifneeded(int array[][MAX_SIZE], int posx, int posy, int turn){

int x,y,i;
int deltax = 0;
int deltay = 0;

//down

while(turn == 1){

for(deltax = -1; deltax< 2; deltax++){
for(deltay = -1; deltay< 2; deltay++){

// deltax = deltax + posx;
// deltay = deltay + posy;

if(array[deltax + posx][deltay + posy] == BLACK){
x = deltax + posx;
y = deltay + posy;

for(i = 0; i< 10000; i++){ x += deltax;
y += deltay;

if((x<0 || x >= MAX_SIZE || y < 0 || y>= MAX_SIZE) ||
(array[x][y] == EMPTY)) {
break;
}
if(array[x][y] == BLACK){
while((array[x-=deltax][y-=deltay] == WHITE)){
array[x][y] = BLACK;
}
break;

}
}
}
}
}
}
while(turn == 2){

for(deltax = -1; deltax< 2; deltax++){
for(deltay = -1; deltay< 2; deltay++){

if(array[deltay + posy][deltax + posx] == WHITE){
x = deltax + posx;
y = deltay + posy;

for(i = 0; i< 10000; i++){

x += deltax;
y += deltay;

if((x<0 || x >= MAX_SIZE || y < 0 || y>= MAX_SIZE) ||
(array[x][y] == EMPTY)) {
break;
}

if(array[x][y] == BLACK){
while(array[x-=deltax][y-=deltay] = WHITE){
array[x][y] = BLACK;

}
break;
}
}
}
}
}
}
}

and this is the function I call it from

Code (Text):

int playingame(int array[][MAX_SIZE],int turn){
// char input[2];

int posx=0;
int posy=0;
if((turn == 2)){

printf("it is Black's turn to move\n");
}

else{

printf("whites turn\n");
}

char letter=0;
int number=0;
printf("Enter your move: \n");
letter = getchar();
number = getchar();
getchar();

posy = letter -'a';
posx = number - '0'-1;

//int counti = i;
//int countj = j;

if((array[posx][posy] == CROSS && turn == 2)){
printf("error\n");
turn = 2;
}
else if((array[posx][posy] == CROSS && turn == 1)){
printf("error\n");
turn = 1;
}
if((array[posx][posy] == EMPTY && turn == 2 )){

array[posx][posy] = BLACK;

updateboard(array);
flipifneeded(array,posx, posy, turn);
turn = nexturn(array, turn);

}
else if((array[posx][posy] == EMPTY && turn == 1)){

array[posx][posy] = WHITE;
updateboard(array);
flipifneeded(array, posx, posy, turn);
turn = nexturn(array, turn);

}

return turn;
}

if someone could help me with this that would be great as I am in a bit of a hurry and can't proceed until I fix this issue.

THANKS.!!

2. Oct 13, 2012

### D H

Staff Emeritus
Code (Text):
while(array[x-=deltax][y-=deltay] = WHITE){
array[x][y] = BLACK;
}
There are at least three things wrong here.
• You aren't protecting against x and y going outside the bounds of the array.
• You should have used == WHITE rather than = WHITE.
• You don't have your compiler warnings set high enough; a good compiler will warn you about using = where it looks like you should have used ==.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook