Мне нужно сделать некоторые функции для двумерных массивов (например, матриц), и проблема только начинается с первого.
Я выделил матрицу в памяти кучи, используя malloc (), а затем попытался создать функцию, которая инициализирует матрицы с помощью цикла for для scanf (), но после 3 раз ввода данных программа вылетает.
Вот код, который я сделал
void initMatrix(int **mat,int row,int col)
{
for(int i=0;i<row;i++){
printf("\n");
for(int j=0;j<col;i++){
printf("Cell (%d,%d): ",i,j);
scanf("%d",&mat[i][j]);
}
}
}
int main()
{
int r,c;
printf("Number of rows: ");
scanf("%d",&r);
printf("Number of columns: ");
scanf("%d",&c);
int **arr = (int **)malloc(sizeof(int*) * r);
for(int i=0;i<r;i++)
arr[i]=(int*)malloc(sizeof(int) * c);
// int count=0;
// for (int i = 0; i < r; i++)
// for (int j = 0; j < c; j++)
// arr[i][j] = ++count;
for (int i = 0; i < r; i++){
printf("\n");
for (int j = 0; j < c; j++)
printf("%d ", arr[i][j]);
}
initMatrix(arr,r,c);
printf("\n");
free(arr);
}
Если я вручную вставляю содержимое матрицы, программа работает (без функции initmatrix ()), я не знаю почему ... Возможно, я где-то допустил ошибку.