Problema programma non legge da FILE[C]

di il
6 risposte

Problema programma non legge da FILE[C]

Ho un problema, penso di tipo logico, con un programma, in pratica il programma dovrebbe:
creare un file in w (ok)
scrivere nel file (ok)
chiudere il file (ok)
aprire il file in r (non ne sono sicuro ma dovrebbe essere ok)
leggere il file (No)
chiudere il file (ok)
stamparlo (a stampare... stampa)

Le ultime non mi funzionano troppo bene poichè mi stampa tutti 0 quindi una dev essere sbagliata!, logicamente potrei anche aver fatto un errore in quelle precedenti ma mi sembra assurdo.
Il programma compila e fa il run senza problemi... HELP ME PLS!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 20


FILE * ApriFile(const char[], char*);
void ChiudiFile ( FILE*);
void LeggiIntMatr (FILE *, int[][MAX]);
void ScriviIntMatrFile (FILE *);
void StampaIntMatrFile (int [][MAX]);

int main() {
    char nomefile[MAX];                             //dimenticato che DEVE essere un ARRAY!!!
    FILE *fps;
    int matr[MAX][MAX] = {0};
    
    
    printf("Inserire nome del file: ");
    scanf("%s", nomefile);
    
    fps = ApriFile( nomefile, "w" );
    printf("APRE IL FILE\n");
    ScriviIntMatrFile ( fps );
    printf("SCRIVE SU FILE\n");
    ChiudiFile ( fps );
    printf("CHIUDE IL FILE\n");
    
    fps = ApriFile( nomefile, "r" );
    printf("APRE IL FILE\n");
    LeggiIntMatr ( fps, matr );
    printf("LEGGE IL FILE\n");
    ChiudiFile ( fps );
    printf("CHIUDE IL FILE\n");
    
    StampaIntMatrFile ( matr );
    
    return (EXIT_SUCCESS);
}

FILE * ApriFile (const char nome_file[], char *mode) { //DIMENTICATO LO STAR * dopo FILE!!!
    FILE *fp;
    
    if( ( fp = fopen( nome_file, mode )) == NULL){
        printf("ERRORE APERTURA FILE");
        exit (EXIT_FAILURE);
    }
    return fp;
}

void ChiudiFile (FILE *fp) {
    fclose( fp );
}

void LeggiIntMatr (FILE *fpin, int matr[][MAX]){              //PROBLEMA!!!
    int i, j;
    
    for( i = 0; i < MAX; i++){
        for ( j = 0; j < MAX; j++) {
            fscanf ( fpin, "%d", &matr[i][j] ); //DIMENTICATO LA &
        }
    }
}

void ScriviIntMatrFile (FILE *fp){
    int i, j;
    
    for(i = 0; i < MAX; i++){
        for ( j = 0; j < MAX; j++) {
            fprintf( fp, "%d", j);
        }
    }
}

void StampaIntMatrFile (int matr[][MAX]) {
    int i, j;
    
    for(i = 0; i < MAX; i++){
        for ( j = 0; j < MAX; j++) {
            printf("%d\n", matr[i][j]);
        }
        printf("\n");       //DIMENTICATO
    }
}

6 Risposte

  • Re: Problema programma non legge da FILE[C]

    Ti consiglio di leggere il punto 6 del Regolamento, prima di beccarti una sanzione.
  • Re: Problema programma non legge da FILE[C]

    gibra ha scritto:


    Ti consiglio di leggere il punto 6 del Regolamento, prima di beccarti una sanzione.
    Mi dispiace sono nuovo così va bene secondo te?
  • Re: Problema programma non legge da FILE[C]

    Così ... come ?

    In sostanza, non è possibile esaminare tutto il programma e correggerlo o, peggio, scrivere tutto il codice che manca al posto tuo.

    Ti devi concentrare su un problema per volta, un problema specifico e di quello dobbiamo discutere.
  • Re: Problema programma non legge da FILE[C]

    oregon ha scritto:


    Così ... come ?

    In sostanza, non è possibile esaminare tutto il programma e correggerlo o, peggio, scrivere tutto il codice che manca al posto tuo.

    Ti devi concentrare su un problema per volta, un problema specifico e di quello dobbiamo discutere.
    Non ho capito manca del codice?
    Il problema l'ho spiegato non stampa quello che dovrebbe stampare
  • Re: Problema programma non legge da FILE[C]

    Va beh ... lasciamo perdere.

    Il problema è nella scrittura ... devi scrivere i valori separati da almeno uno spazio altrimenti, quando li rileggi, non possono essere individuati singolarmente. Quindi

    fprintf( fp, "%d ", j);
  • Re: Problema programma non legge da FILE[C]

    oregon ha scritto:


    Va beh ... lasciamo perdere.

    Il problema è nella scrittura ... devi scrivere i valori separati da almeno uno spazio altrimenti, quando li rileggi, non possono essere individuati singolarmente. Quindi

    fprintf( fp, "%d ", j);
    Ciao, ti ringrazio, non ci avevo proprio fatto caso, ora funziona
Devi accedere o registrarti per scrivere nel forum
6 risposte