Есть непрямоугольная матрица. Не получается сделать её копию. Не могу найти ошибку в функции copyMatrix()
Пишу на C, не на C++
// структура для задания строки матрицы
struct Line{
int n; // количество элементов в строке матрицы
int *a; // массив элементов
};
// структура для задания самой матрицы
struct Matrix{
int lines; // количество строк матрицы
Line *matr; // массив строк матрицы
};
Создаю две матрицы (исходная и её будущая копия).
int main()
{
Matrix matr = { 0, NULL }; // исходная матрица
Matrix matrT = { 0, NULL }; // копия исходной матрицы
inputMatrix(&matr); // это функция для заполнения матрицы, там мы указываем все размеры матрицы и сами элементы. Всё работает
copyMatrix(&matr, &matrT); // создаем копию. но она не создается.
outputMatrix("Source matrix", matr); // выводим исходную матрицу на экран, всё выводится
outputMatrix("Transposed matrix", matrT); // выводим скопированную матрицу на экран. Не выводится ничего кроме ""Transposed matrix"
}
void copyMatrix(Matrix *arr1, Matrix *arr2) // создание копии матрицы
{
arr2->matr = (Line *)calloc(arr1->lines, sizeof(Line));
for (int i = 0; i < arr1->lines; i++)
{
arr2->matr[i].a = (int *)malloc(arr1->matr[i].n*sizeof(int));
for (int j = 0; j < arr1->matr[i].n; j++)
arr2->matr[i].a[j] = arr1->matr[i].a[j];
}
}