Edit3: добавлен пример.
Edit2: Итак, поскольку я новичок в кодировании в целом и из-за текущих комментариев, я должен спросить, было бы лучше, если бы я разместил весь код как комментарий? (около 90 строк)
Итак, я поиграл с динамическим распределением памяти c и у меня есть двухмерная доска, которая заполняется символом '.'. Затем я импортирую доску в функцию, которая проверяет наличие доступных ячеек (ячейка с «.» == в наличии). Он компилируется нормально, но когда я запускаю его, я получаю
segmentation fault
Вот код для платы mallo c
**board = (char**) malloc(x_input*sizeof(char*));
for(i = 0; i <x_input; i++){
board[i] = (char*) malloc(y_input*sizeof(char));
}
for (i = 0; i<x_input; i++){
for(j = 0; j<y_input; j++){
board[i][j]='.';
}
}
Вот функция
int checker(int x_axis, int y_axis, char **board){
if (board[x_axis][y_axis] == '.'){
return 1;
} else {
return 2;
}
}
И вот единственный раз (пока), когда я вызываю функцию Edit: x_replacement
и y_replacement
назначаются случайные значения с помощью функции rand
do{
board[x_replacement][y_replacement] = '$';
} while(checker(x_replacement, y_replacement, board) == 2);
EX:
const int MAX_X = 40;
const int MAX_Y = 40;
const int MIN_X = 20;
const int MIN_Y = 20;
int x_input, y_input;
int main(void){
char **board;
int i, j, k, obstacles, enemies, choice;
do{
printf("Enter board size. (Must be between (%d, %d) and (%d, %d))\n:", MIN_X, MIN_Y, MAX_X, MAX_Y);
scanf("%d%d", &x_input, &y_input);
}while ((x_input <= MIN_X && x_input >= MAX_X) && (y_input <= MIN_Y && y_input >= MAX_Y));
*board = malloc(sizeof(char[x_input][y_input]));
assert(*board != NULL);
for (i = 0; i<x_input; i++){
for(j = 0; j<y_input; j++){
board[i][j]='.';
}
}
return 0;
}