如何初始化,创建矩阵,然后使用结构打印

时间:2014-04-28 18:56:49

标签: c matrix structure

我想使用结构创建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");
      }
    }

1 个答案:

答案 0 :(得分:0)

  1. scanf("%d", p->a[i][j]);更改为scanf("%d", &p->a[i][j]);。最好检查scanf()的结果,以确保代码收到预期的数据。

    if (scanf("%d", &p->a[i][j]) != 1) Oops();
    
  2. 在编译器上启用所有警告。这个问题马上就出现了。

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