 
View Full Version : [C] aprire molti file
ciao a tutti, mi servirebbe una mano, dovrei aprire molti file e evitare di fare tanti puntatori diversi, pensavo di fare una specie di array. questo e quello che scrivo ma ovviamente  è sbagliato! volevo sapere se e possibile fare una cosa del genere! perchè vorrei passare a altre funzioni solo un puntatore!
sicuramente mi sono spiegato male quindi vi scrivo il codice magari mi capite meglio e se potete mi date alternative grazie!
	FILE dati[27][4];
	
	
	dati[0][0] = fopen ( "/Users/Tom/Tesi/DIVISI/AHP-15m.tom","r");
	dati[0][1] = fopen( "/Users/Tom/Tesi/DIVISI/AHP/AHP-15m-1.tom","r");
	dati[0][2] = fopen( "/Users/Tom/Tesi/DIVISI/AHP/AHP-15m-2.tom","r");
	dati[0][3] = fopen( "/Users/Tom/Tesi/DIVISI/AHP/AHP-15m-3.tom","r");
	dati[1][0] = fopen ( "/Users/Tom/Tesi/DIVISI/AIG-15m.tom","r");
grazie ancora!
Sono grandi questi file ?
Se sono piccoli ti conviene trasferirli tutti in memoria ;) Usi una stessa funzione per leggerli, quindi il codice è molto più snello.
stefano_ba
21-12-2008, 23:14
fopen ritorna un puntatore a FILE, quindi dovresti definire gli elementi del vettore come puntatori a FILE.
Prova con FILE *dati[27][4];
Ti consiglierei anche di creare una tua funzione ApriFile(char*nomedelfile, char*modalita)  da utilizzare cosi'
dati[0][0] = ApriFile ( "/Users/Tom/Tesi/DIVISI/AHP-15m.tom","r");
e che si occupa al suo interno della chiamata ad fopen per aprire il file e gestisce l'eventuale errore se il file stesso e' non esistente.
grazie mille infatti era nel mio progetto mi dimenticavo della *. perchè pensavo che dichiarando l'array non avessi bisogno del puntatore ;)
i file sono molto grandi ;) quindi opterò per il consiglio di stefano_ba grazie cmq cionci!!
fopen ritorna un puntatore a FILE, quindi dovresti definire gli elementi del vettore come puntatori a FILE.
Prova con FILE *dati[27][4];
Ti consiglierei anche di creare una tua funzione ApriFile(char*nomedelfile, char*modalita)  da utilizzare cosi'
dati[0][0] = ApriFile ( "/Users/Tom/Tesi/DIVISI/AHP-15m.tom","r");
e che si occupa al suo interno della chiamata ad fopen per aprire il file e gestisce l'eventuale errore se il file stesso e' non esistente.
una cosa così quindi andrebbe bene?
	
FILE *ApriFile(char *nomedelfile, char *modalita)
{
	FILE *in;
	
	in = fopen(nomedelfile,modalita);
	if(in==NULL) printf("errore apertura file %s",&nomedelfile);
	
	return in;
}
stefano_ba
22-12-2008, 00:11
Aggiungerei un interruzione del programma al punto dell'errore, altrimenti il programma proseguirebbe l'esecuzione nonostante l'errore.
FILE *ApriFile(char *nomedelfile, char *modalita)
{
	FILE *in;
	
	in = fopen(nomedelfile,modalita);
	if(in==NULL){
		printf("errore apertura file %s",&nomedelfile);
		exit(-1);/* Termino l'esecuzione */
	}
	return in;
}
2 riferimenti http://digilander.libero.it/uzappi/C/librerie/funzioni/exit.html e http://home.dei.polimi.it/pozzi/Info2/PrimitiveProcessi.pdf
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.