Witam, chcę wczytać z pliku .txt macierz kwadratowa zapisaną jak poniżej i gdy próbuję odczytać wartości elementów to np. dla macierzy o rozmiarze 3 zamiast 9 elementów pojawia się 18, próbowałem rozwiązać ten problem sam ale nie udało się mi się. Może ktoś zauważy czemu dopisywane są nowe elementy?
#include <stdio.h>
#include <stdlib.h>
int read();
int size();
int det(int** matrix, int s);
int main()
{
int s;
int **m ;
m = read();
s = size();
printf("Rozmiar = %i\n\n", s);
printf("Wyznacznik wynosi: ",det(m, s));
return 0;
}
int size()
{
FILE* f;
int size;
f = fopen("matrix.txt", "r");
if (f == NULL) {
printf("Blad otwarcia pliku liczby.txt\n");
return 1;
}
printf("Pomyslnie wczytano macierz\n");
fscanf(f, "%d", &size);
return size;
}
int read()
{
FILE* f;
int liczba, i, j, size;
f = fopen("matrix.txt", "r");
if (f == NULL) {
printf("Blad otwarcia pliku liczby.txt\n");
return 1;
}
fscanf(f, "%d", &size);
int** matrix;
matrix = malloc(size * sizeof(int*));
for (i = 0; i < size; i++) {
matrix[i] = malloc(size * sizeof(int));
}
printf("Sizeof matrix: %ld \n", sizeof(matrix));
for (; feof(f) == 0;) {
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
fscanf(f, "%i", &liczba);
matrix[i][j] = liczba;
printf("%i\t", liczba);
}
printf("\n");
}
}
printf("Macierz zostala wypelniona: \n");
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
printf("%i\t", matrix[i][j]);
}
printf("\n");
}
fclose(f);
/* for (i = 0; i < size; i++)
{
free(matrix[i]);
}
free(matrix);
*/
return **matrix;
}
int det(int** matrix, int s)
{
int i = 0, j = 0;
if(s==1)
return matrix[i][j];
if(s==2)
return matrix[0][0] * matrix[1][1] - matrix[0][0] * matrix [1][1];
}