Динамическая матричная инициализация с помощью scanf () - PullRequest
0 голосов
/ 06 января 2019

Мне нужно сделать некоторые функции для двумерных массивов (например, матриц), и проблема только начинается с первого.

Я выделил матрицу в памяти кучи, используя 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 ()), я не знаю почему ... Возможно, я где-то допустил ошибку.

...