Ciao ragazzi!
Questa volta mi trovo a risolvere questo esercizio:
Scrivere un programma in linguaggio C che realizzi la seguente funzione: int** leggiMatrice(char* filename) che, presa in input la stringa che rappresenta il percorso di un file, restituisce la matrice, come array di puntatori, rappresentata nel file. Assumere che la matrice nel file sia rappresentata per righe con gli elementi di ciascuna riga separati da spazi bianchi, e con la PRIMA riga contenente solo le dimensioni della matrice, n° righe e n° colonne
Ad esempio un file con il contenuto seguente:
3 4
2 101 23 4
1 2 3 3
0 0 0 0
rappresenta una matrice 3x4 (elementi della 1° riga)
Non so perché la matrice non venga visualizzata correttamente, nell'anteprima si vede bene. Comunque immaginatela allineata
Verificare la funzione mediante un'opportuna funzione main di prova.
Ho strutturato il mio progetto nel seguente modo:
Il main nel file matrice.c
#include <string.h>
#include <stdio.h>
#include "leggiMatrice.h"
int main()
{
FILE* pfile = fopen("/home/davide/Scrivania/matrice.txt", "w+");
leggiMatrice(pfile);
return 0;
}
Il file per l'intestazione della funzione leggiMatrice.h
int **leggiMatrice(char *filename);
Il file per il corpo della funzione leggiMatrice.c
#include <string.h>
#include <stdio.h>
#include "leggiMatrice.h"
int **leggiMatrice(char *filename)
{
}
Ed infine il
makefile:
matrice.o: matrice.c
gcc -c matrice.c
leggiMatrice.o: leggiMatrice.c
gcc -c leggiMatrice.c
eseguibile: matrice.o leggiMatrice.o
gcc -o exe matrice.o leggiMatrice.o
Compilando, mi da questi errori (o meglio warning, tuttavia l'eseguibile me lo crea!!) che non capisco:
make -f makefile.txt eseguibile
gcc -c matrice.c
matrice.c: In function ‘main’:
matrice.c:7:2: warning: passing argument 1 of ‘leggiMatrice’ from incompatible pointer type [enabled by default]
leggiMatrice(pfile);
^
In file included from matrice.c:3:0:
leggiMatrice.h:1:7: note: expected ‘char *’ but argument is of type ‘struct FILE *’
int **leggiMatrice(char *filename);
^
gcc -c leggiMatrice.c
gcc -o exe matrice.o leggiMatrice.o
Grazie