Matrice da file

di il
5 risposte

Matrice da file

Ciao a tutti! Avrei bidogno di un chiarimento

Supponiamo che io abbia un file do testo (.txt) che contiene una matrice di numeri separati da spazi.
Per esempio (N=3)
1 2 3
4 5 6
7 8 9

Voglio caricare la matrice in memoria.
Predispongo quindi una matrice m[3][3].
Utilizzo due for annidati

for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
m[j]= fgetc(file.txt);
fgetchar(file.txt);
}
}

La matrice m dovrà essere precedentemente dichiarata come int o come char?
E, in questo caso, posso eseguire le normali operazioni tra i numeri oppure devo, all'interno del ciclo, convertire ogni numero in intero? E qual è il modo più veloce/efficace di farlo?

Grazie

5 Risposte

  • Re: Matrice da file

    Se i valori del file sono numerici allora la matrice è bene che sia numerica.

    Ovviamente il file va aperto in lettura ... e quelle funzioni non sono chiamate correttamente nè sono utili allo scopo, ti consiglio di usare la fscanf per leggere direttamente il dato.
  • Re: Matrice da file

    Quindi per esempio questo codice:

    int m[N][N], i, j;
    FILE *f;

    f=fopen(miofile.txt);

    for(i=0; i<N; i++)
    {
    for(j=0; j<N; j++)
    fscanf("%d "m[j];
    }
    }

    E' corretto? Che influenza hanno gli spazi?
    Hai scritto che le funzioni non sono chiamate correttamente: che tipo di errore ho commesso? (del fatto che non fossero particolarmente utili ne ero consapevole )

    Grazie
  • Re: Matrice da file

    Scusami, ho sbagliato a scrivere.
    La funzione sarebbe

    fscanf(f, "%d "m[j]);
  • Re: Matrice da file

    La fscanf deve essere

    fscanf(f, "%d", &m[j]);

    e la fopen è sbagliata
  • Re: Matrice da file

    Sì, scusami, ho scritto tutto di fretta.
    Il fatto che i numeri siano separati da spazi non ha alcuna influenza perché la fscanf con %d salva solo i numeri interi?
Devi accedere o registrarti per scrivere nel forum
5 risposte