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
}
}