/* File: file.c */

#include <stdio.h>

int main(void)
{
  FILE* fp;  /* file pointer */
  char ch;

  fp = fopen("prova.txt", "r"); /* apre in lettura il file prova.txt
                                   nella dir corrente */

  if (fp == NULL) { /* Nota: e' bene gentire in qualche modo
                       il fallimento dell'apertura! */
    printf("Errore nell'apertura del file!");
    return 0;
  }

  /* Nota: feof() restituisce VERO solo dopo aver letto EOF (end-of-file) */
  /* Nota: se nel leggere un dato fscanf incontra EOF allora non istanza
     la variabile passata per indirizzo, lasciandola immutata! */

  fscanf(fp, "%c", &ch);   /* leggi un dato (un carattere in questo caso) */
  while (!feof(fp)) {      /* fino a che non hai letto EOF ... */
    printf("%c",ch);       /* usa il dato letto */
    fscanf(fp, "%c", &ch); /* leggi un dato (un carattere in questo caso) */
  }

  fclose(fp);  /* Nota: e' sempre necessario chiudere i file aperti altrimenti
                  se ne perde il contenuto! */
  return 0;
}
