关于矩阵加法三元组的C语言程序如何修改

矩阵加法,用三元组方式,默认两个被加矩阵有相同行和列,纯C语言
测试用例:

1,1,2;2,1,31,2,5;2,1,-3

期望输出


1,1,2;1,2,5

我的代码

#include
#include
#define MAX 100
typedef struct {
    int row,col;
    int e;
}Triple;
typedef struct {
    Triple data[101];
}Mat;
int main(){
    struct Mat *A,*B,*C;
    A=(Mat*)malloc(MAX*sizeof(Mat));
    B=(Mat*)malooc(MAX*sizeof(Mat));
    C=(Mat*)malloc(MAx*sizeof(Mat));
    scanf("%d,%d,%d;%d,%d,%d\n",A.data[1].row,A.data[1].col,A.data[1].e,A.data[2].row,A.data[2].col,A.data[2].e);
    scanf("%d,%d,%d;%d,%d,%d\n",B.data[1].row,B.data[1].col,B.data[1].e,B.data[2].row,B.data[2].col,B.data[2].e);
    int i,j;
    int cou=0;
    for(i=1;i<3;i++)
    {
        for(j=1;j<3;j++)
        {
            if((A.data[i].row==B.data[j].row)&&(A.data[i].col==B.data[j].col))
            {
                cou++;
                C.data[cou].row=A.data[i].row;
                C.data[cou].col=A.data[i].col;
                C.data[cou].e=A.data[i].e+B.data[j].e;
                free(A.data[i]);
                free(B.data[j]);
            }
            else {
                cou++;
                C.data[cou].row=A.data[i].row;
                C.data[cou].col=A.data[i].col;
                C.data[cou].e=A.data[i].e;
                free(A.data[i]);
                cou++;
                C.data[cou].row=B.data[i].row;
                C.data[cou].col=B.data[i].col;
                C.data[cou].e=B.data[i].e;
                free(B.data[j]);
        }
            }
        }
    for(int p=1;C.data[p].e!=0&&p<5;p++)
    {
        scanf("%d,%d,%d;",C.data[p].row,C.data[p].col,C.data[p].e);
    }
    printf("\n");
}

错误很多,请从我的代码基础上改错

scanf连取地址都没有加。。。