使用scanf()进行动态矩阵初始化

时间:2019-01-06 18:09:58

标签: c function matrix malloc

我需要为二维数组(也称为矩阵)创建一些函数,而问题只是从第一个数组开始。

我使用malloc()在堆内存中分配了矩阵,然后尝试创建一个使用scanf()s的for循环初始化矩阵的函数,但是在输入了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()函数),我不知道为什么……我可能在某个地方犯了错误。

0 个答案:

没有答案