Page 608 - Informatica dalla A a Z
P. 608
Altre operazioni sui File:
int remove (char * nomefile) /* cancella file nomefile; resti-
tuisce 0 se buon fine, != 0 al-trimenti*/
int rename (char *oldname, char *newname) /* cambia nome al file
restituisce 0 se buon fine, !=0 altrimenti*/
int fclose (FILE * fp) /* fp diventa NULL, descrittore di tipo
FILE rilasciato; restituisce 0 se buon fine, altrimenti EOF*/
La gestione degli ERRORI
Se cercassimo di aprire un file inesistente, o semplicemente lo cercassimo nel posto sba-
gliato, il compilatore C andrebbe in crash; per questo bisogna sempre effettuare dei con-
trolli per verificare se l’operazione di apertura di un file sia andata o meno a buon fine.
Esempio
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE * fp;
int x;
if ( (fp = fopen(“numeri.txt”, “r”)) == NULL )
{
printf(“Si e’ verificato un errore nell’apertura del
file.”);
return 1;
}
while (!feof(fp))
{
fscanf(fp, “%d”, &x);
printf(“%d ”, x);
}
fclose(fp);
}
In pratica non facciamo altro che verificare il valore restituito dalla funzione fopen, e se
non vi sono errori, la funzione restituisce un puntatore alla struttura FILE, altrimenti resti-
tuirà un puntatore a NULL.
Nel caso ci fosse un errore, la printf ce lo segnala, e si forza l’uscita dal programma con
l’istruzione return (1).
604