在 C 中打印二维矩阵

print 2D matrix in C

我正在尝试创建和打印矩阵,但出现分段错误。

int** init_dynamic_matrix (int l, int c);
void print_dynamic_matrix (int** ppints, int l, int c);

int main ()
{
    int** ppints = NULL;
    int l = 6, c = 3;

    ppints = init_dynamic_matrix (l, c);
    print_dynamic_matrix (ppints, l, c);

    return 0;
}

int** init_dynamic_matrix (int l, int c)
{
    int i = 0, j = 0;
    int** ppaux = NULL;

    ppaux = (int**) malloc (l * (sizeof (int*)));

    for (i = 0; i < l; i++)
    {
        *(ppaux + i) = (int*) malloc (c * (sizeof (int)));

        for (j = 0; j < c; j++)
        {
            ppaux[l][c] = 0;
        }
    }

    return ppaux;
}

void print_dynamic_matrix (int** ppints, int l, int c)
{
    int i = 0, j = 0;

    for (i = 0; i < l; i++)
    {
        for (j = 0; j < c; j++)
        {
            printf ("%d", ppints[l][c]);
        }
        printf("\n");
    }
}
    for (j = 0; j < c; j++)
    {
        ppaux[l][c] = 0;
    }

这是错误:在外部 for 循环的第一次迭代中,您将执行此操作,但 ppaux[l] 尚未初始化,因此出现分段错误。

你的意思可能是这样的:

    for (j = 0; j < c; j++)
    {
        ppaux[i][j] = 0;
    }

因为您刚刚创建了矩阵的第 i 行并且您想将其设置为 0