PDA

View Full Version : [C] Apertura e chiusura di un FILE in funzioni diverse


kwb
09-12-2010, 12:11
Ciao, sto facendo un programma in cui ho nel main una variabile dichiarata come:

FILE* fp;

Poi l'apertura del file viene fatta in un'altra funzione apposita. Siccome ho la necessità di lavorare sul fp in altre funzioni, devo quindi fare un passaggio per riferimento alla funzione d'apertura del fp, quindi il prototipo della funzione d'apertura è
fapert ( FILE** fp);
La chiamata nel main della funzione d'apertura è:
fapert(&fp);
Dopo aver aperto il file, torno al main e parte un'altra funzione per l'elaborazione del fp, ove il prototipo da me fatto è:
elabfp ( FILE* fp);
Dentro questa funzione, al termine dell'elaborazione, voglio chiudere il file, con la funzione fclose.
Tuttavia mi sono accorto che forse nel main rimane ancora aperto il fp. Dico forse perchè guardando l'indirizzo di fp, questo non è uguale a 0x0 come mi aspetterei...

Quindi, la funzione di elaborazione chiude veramente il file pointer all'interno dell'intero programma o no? Oppure la chiusura è limitata alla sola funzione di elaborazione e nel main il fp è ancora aperto?

banryu79
09-12-2010, 12:21
A prescindere, penso sia buona pratica chiudere/liberare le risorse nello stesso scope in cui si sono aperte/allocate.

Comunque l'indirizzo assegnato a fp c'entra poco, per capire se il file pointer è ancora valido prova a fare una operazione subito dopo il punto in cui pensi di averlo chiuso per vedere se va a buon fine o meno.
Magari c'è una funzione apposita, ora non ricordo, sono eoni che non lavoro in C...
Magari usa un file di prova.