在C中打印2D矩阵

时间:2015-12-05 17:06:44

标签: c matrix malloc

我试图创建和打印矩阵,但我发现了分段错误。

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");
    }
}

1 个答案:

答案 0 :(得分:0)

    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