我想使用结构创建2D数组并从用户读取,然后显示它。但我无法找出这个问题。 /抱歉伙计们。首先,我想让它从用户那里读取矩阵元素,然后我想显示整个矩阵。但它没有正确打印,它打印元素的地址。为什么打印地址,而不是价值? / 这是我的代码:
#include <stdio.h>
struct Matrix {
int n,m;
int a[100][100];
}array;
int main() {
struct Matrix *p;
int i,j;
p = malloc(sizeof(array));
scanf("%d%d", &p->n, &p->m);
for (i = 0;i < p->n;i++)
for (j = 0;j < p->m;j++)
scanf("%d", p->a[i][j]);
for (i = 0;i < p->n;i++){
for (j = 0;j < p->m;j++)
printf("%d ", (p->a[i][j]));
printf("\n");
}
}
答案 0 :(得分:0)
将scanf("%d", p->a[i][j]);
更改为scanf("%d", &p->a[i][j]);
。最好检查scanf()
的结果,以确保代码收到预期的数据。
if (scanf("%d", &p->a[i][j]) != 1) Oops();
在编译器上启用所有警告。这个问题马上就出现了。
#include <stdio.h>
struct Matrix {
int n, m;
int a[100][100];
} array;
int main() {
struct Matrix *p;
int i, j;
p = malloc(sizeof(array));
scanf("%d%d", &p->n, &p->m);
for (i = 0; i < p->n; i++)
for (j = 0; j < p->m; j++) {
// scanf("%d", p->a[i][j]);
scanf("%d", &p->a[i][j]);
}
for (i = 0; i < p->n; i++) {
for (j = 0; j < p->m; j++)
printf("%d ", (p->a[i][j]));
printf("\n");
}
}