请问以下代码哪里有错误?
#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef struct
{
int i, j, e;//非零元的行下表、列下标以及元本身
}triple;
typedef struct
{
triple data[maxsize];//存储三元组的数组
int mu, nu, tu;//行数、列数以及非零元个数
}tsmatrix;
tsmatrix* create1()
{
int m = 3, n = 3, k = 0, t = 0,temp;
tsmatrix* matrix1;
matrix1 = (tsmatrix*)malloc(sizeof(tsmatrix));
FILE* fp1 = fopen("D:\\code\\三元组\\三元组1.txt", "r");
for (k = 0; !feof(fp1); k++)
{
fscanf(fp1, "%d", &temp);
if (temp != 0)
{
matrix1->data[t].i = k / n + 1;
matrix1-> data[t].j = k % n + 1;
matrix1->data[t].e = temp;
t++;
}
}
matrix1->tu = t;
fclose(fp1);
return matrix1;
}
tsmatrix* create2()
{
int m = 3, n = 3, k = 0, t = 0, temp;
tsmatrix* matrix2;
matrix2 = (tsmatrix*)malloc(sizeof(tsmatrix));
FILE* fp2 = fopen("D:\\code\\三元组\\三元组2.txt", "r");
for (k = 0; !feof(fp2); k++)
{
fscanf(fp2, "%d", &temp);
if (temp != 0)
{
matrix2->data[t].i = k / n + 1;
matrix2->data[t].j = k % n + 1;
matrix2->data[t].e = temp;
t++;
}
}
matrix2->tu = t;
fclose(fp2);
return matrix2;
}
tsmatrix*and (tsmatrix* m, tsmatrix* n)
{
int t=0;
triple* p = &m->data, * k = &n->data;
tsmatrix* a;
a = (tsmatrix*)malloc(sizeof(tsmatrix));
while (p && k)
{
if (p->i == k->i)
{
if (p->j == k->j)
{
a->data[t].e = p->e + k->e;
if (a->data[t].e == 0)
{
k++;
p++;
}
else
{
a->data[t].i = p->i;
a->data[t].j = p->j;
t++;
p++;
k++;
}
//continue;
}
else if (p->j < k->j)
{
a ->data[t].i = p->i;
a ->data[t].j = p->j;
a ->data[t].e = p->e;
t++;
p++;
}
else
{
a ->data[t].i = k->i;
a ->data[t].j = k->j;
a ->data[t].e = k->e;
t++;
k++;
}
}
else if (p->i > k->i)
{
a ->data[t].i = k->i;
a ->data[t].j = k->j;
a ->data[t].e = k->e;
t++;
k++;
}
else
{
a ->data[t].i = p->i;
a ->data[t].j = p->j;
a ->data[t].e = p->e;
t++;
p++;
}
}
if (p == NULL)
{
while (k)
{
a ->data->i = k->i;
a ->data->j = k->j;
a ->data->e = k->e;
}
}
if (k == NULL)
{
while (p)
{
a ->data->i = p->i;
a ->data->j = p->j;
a ->data->e = p->e;
}
}
a ->tu = t;
return a;
}
int main()
{
tsmatrix* matrix1 = create1();
tsmatrix* matrix2 = create2();
tsmatrix* matrix3 = and(matrix1,matrix2);
int t;
for (t = 0; t < matrix3->tu; t)
printf("%d %d %d\n", matrix3->data[t].i, matrix3->data[t].j, matrix3->data[t].e);
return 0;
}