在 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
我正在尝试创建和打印矩阵,但出现分段错误。
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