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
   603   604   605   606   607   608   609   610   611   612   613