C 如何使用结构初始化、创建矩阵并打印

C 如何使用结构初始化、创建矩阵并打印,c,matrix,structure,C,Matrix,Structure,我想使用结构创建二维数组,并从用户处读取,然后显示它。但我不知道这是怎么回事。 /对不起,伙计们。首先,我想让它从用户那里读取矩阵元素,然后我想显示整个矩阵。但它不能正确打印,它会打印元素的地址。为什么是打印地址,而不是打印值/ 这是我的密码: #include <stdio.h> struct Matrix { int n,m; int a[100][100]; }array; int main() { struct M

我想使用结构创建二维数组,并从用户处读取,然后显示它。但我不知道这是怎么回事。 /对不起,伙计们。首先,我想让它从用户那里读取矩阵元素,然后我想显示整个矩阵。但它不能正确打印,它会打印元素的地址。为什么是打印地址,而不是打印值/ 这是我的密码:

#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");
      }
    }
#包括
结构矩阵{
int n,m;
INTA[100][100];
}阵列;
int main(){
结构矩阵*p;
int i,j;
p=malloc(sizeof(数组));
扫描频率(“%d%d”,&p->n,&p->m);
对于(i=0;in;i++)
对于(j=0;jm;j++)
scanf(“%d”,p->a[i][j]);
对于(i=0;in;i++){
对于(j=0;jm;j++)
printf(“%d”,(p->a[i][j]);
printf(“\n”);
}
}
  • 更改
    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");
        }
    }
    
    #包括
    结构矩阵{
    int n,m;
    INTA[100][100];
    }阵列;
    int main(){
    结构矩阵*p;
    int i,j;
    p=malloc(sizeof(数组));
    扫描频率(“%d%d”,&p->n,&p->m);
    对于(i=0;in;i++)
    对于(j=0;jm;j++){
    //scanf(“%d”,p->a[i][j]);
    scanf(“%d”,&p->a[i][j]);
    }
    对于(i=0;in;i++){
    对于(j=0;jm;j++)
    printf(“%d”,(p->a[i][j]);
    printf(“\n”);
    }
    }
    

  • 如果您说它不起作用了,并且出现了问题,会发生什么情况?是否有理由声明
    array
    ?它应该是
    typedef
    ?您输入了什么?结果是什么?Telmen Munkhdalai,请编辑你的问题,包括为什么你认为有问题。