Funzione che legge una matrice da file [C]

di il
6 risposte

Funzione che legge una matrice da file [C]

Salve a tutti,come da titolo,ma il programma stampa tanti numeri a caso e poi crasha.dove sbaglio?






#include <stdio.h>
#include <stdlib.h>
#define DIM 50


void lettura(FILE *fp,int r,int c,int mat1[DIM][DIM]);

int main(){
int i ;
int j ;
int r ;
int c ;	
int mat1[DIM][DIM];	
FILE *fp;
	
		//lettura di numero righe, colonne e elementi matrice
	if(fp!=NULL)
	{
	fp=fopen("trova.txt","r");
	lettura(fp,r,c,mat1);  

	

printf("La matrice letta da file ha %d righe e %d colonne ed e' la seguente:\n",r,c);
for( i=0;i<r;i++)
{
for( j=0;j<c;j++)
printf("%d",mat1[i][j]);
printf("\n");
}
	
fclose(fp);	
	
}

}
void lettura(FILE *fp,int r,int c,int mat1[DIM][DIM]){
int i ;
int j ;
				
fscanf(fp,"%d%d",&r,&c); //lettura riga e colonna

		for( i=0;i<r;i++)
        for( j=0;j<c;j++)
        fscanf(fp,"%d",&mat1[i][j]); //lettura elementi della matrice da file
}













6 Risposte

  • Re: Funzione che legge una matrice da file [C]

    Questa

    if(fp!=NULL)

    va fatta DOPO aver aperto il file non prima !

    E poi le variabili r e c non devono essere passate in quel modo, ma per puntatore e il loro valore assegnato nella funzione.
  • Re: Funzione che legge una matrice da file [C]

    oregon ha scritto:


    Questa

    if(fp!=NULL)

    va fatta DOPO aver aperto il file non prima !

    E poi le variabili r e c non devono essere passate in quel modo, ma per puntatore e il loro valore assegnato nella funzione.
    già mi stava venendo quel dubbio,avevo messo il puntatore ma continuava a non funzionare...ora provo
  • Re: Funzione che legge una matrice da file [C]

    Ho provato ma questa volta mi da errore e non compila...

    
    #include <stdio.h>
    #include <stdlib.h>
    #define DIM 50
    
    
    void lettura(FILE *fp,int *r,int *c,int mat1[DIM][DIM]);
    
    int main(){
    int i ;
    int j ;
    int r ;
    int c ;	
    int mat1[DIM][DIM];	
    FILE *fp;
    	
    		//lettura di numero righe, colonne e elementi matrice
    	
    	fp=fopen("trova.txt","r");
    	if(fp!=NULL)
    	{
    	
    	lettura(fp,&r,&c,mat1);  
    
    	
    
    printf("La matrice letta da file ha %d righe e %d colonne ed e' la seguente:\n",r,c);
    for( i=0;i<r;i++)
    {
    for( j=0;j<c;j++)
    printf("%d",mat1[i][j]);
    printf("\n");
    }
    	
    fclose(fp);	
    	
    } 
    
    
    
    } //fine prog
    
    void lettura(FILE *fp,int *r,int *c,int mat1[DIM][DIM]){
    int i ;
    int j ;
    				
    fscanf(fp,"%d%d",&r,&c); //lettura riga e colonna
    
    		for( i=0;i<*r;i++)
            for( j=0;j<*c;j++)
            fscanf(fp,"%d",&mat1[i][j]); //lettura elementi della matrice da file
    }
    
    
    
  • Re: Funzione che legge una matrice da file [C]

    Il numero di riga e colonna li devi leggere dal file?

    In questo caso, secondo te, questa linea

    fscanf(fp, "%d%d", &r, &c); //lettura riga e colonna

    è corretta dato che

    void lettura(FILE *fp, int *r, int *c, int mat1[DIM][DIM]) {

    ?
  • Re: Funzione che legge una matrice da file [C]

    oregon ha scritto:


    Il numero di riga e colonna li devi leggere dal file?

    In questo caso, secondo te, questa linea

    fscanf(fp, "%d%d", &r, &c); //lettura riga e colonna

    è corretta dato che

    void lettura(FILE *fp, int *r, int *c, int mat1[DIM][DIM]) {

    ?
    non me ne ero accorto ! grazie mille,mi ero dimenticato di levare & .
  • Re: Funzione che legge una matrice da file [C]

    Impara a leggere i messaggi d'errore del compilatore. Ti dicono tutto.
Devi accedere o registrarti per scrivere nel forum
6 risposte