Я читал об этом, и я применяю то, что я читал к своему коду, но я не уверен, что у меня что-то не хватает. судоку. Я знаю, что проблемная область находится в моей функции arrayMake. Мой профессор рекомендовал использовать бросок с вызовом malloc так: sudoku = (int**)malloc(sudokus*sizeof(int*));
, но это не сработало для меня.Динамическое выделение 2D-массива в C
int main(){
int sudokus;
int** sudoku;
sudokus = getUserInfo();
sudoku = arrayMake(sudokus);
/*for (int i = 0; i < (SIZE*sudokus), i++;){
for (int j = 0; j < SIZE, j++;){
printf("Numbers[%d][%d]:%d", i, j, sudoku[i][j]);
}
}*/
system("pause");
return 0;
}
int getUserInfo(){
int sudokus;
printf("How many Sudokus are you checking today?\n");
scanf("%d{^\n]\n", &sudokus);
return sudokus;
}
int** arrayMake(int sudokus){
int **sudoku;
int realsize;
realsize = 9 * sudokus;
sudoku = malloc(realsize*sizeof(int*));
if (sudoku == NULL){
printf("Memory allocation failed");
return 0;
}
for (int i = 0; i < realsize, i++;){
sudoku[i] = malloc(9 * sizeof(int));
if (sudoku[i] == NULL){
printf("Memory allocaiton failed");
return 0;
}
}
return sudoku;
}
Вы хотите выделить массив _pointers_ или массив _ints_? – e0k
Возможно, я немного смущен, поскольку то, что я планировал делать, это распределение строк так, 9 строк * пользовательский ввод, потому что пользователь может вводить несколько судокусов. то я хотел всего 9 столбцов. Итак, я бы предположил массив указателей, указывающих на ints? – Jude
Чтобы выделить двумерный массив 'int', просто выделите количество строк, умноженное на количество столбцов times 'sizeof (int)'. Вам не нужно создавать новое распределение для каждой строки или каждого столбца. – e0k