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