Riportarsi all'inizio di un file

La funzione rewind permette di riposizionarsi all'inizio di un file. Nel caso di file aperti in lettura, è equivalente a chiudere il file ed aprirlo di nuovo. Il programma inizio.c riportato qui sotto fa vedere una applicazione di questa funzione: un file viene letto e stampato su schermo riga per riga. Quando si arriva alla fine, viene chiamata la funzione rewind che ``riavvolge'' il file, ossia ci riporta all'inizio del file: la successiva operazione di lettura legge l'inizio del file. Il programma effettua poi un secondo ciclo di lettura e stampa. L'effetto finale è quello di leggere e stampare due volte il file.

/*
  Stampa due volte un file.
*/

#include<stdlib.h>
#include<stdio.h>

int main() {
  FILE *fd;
  char buf[200];
  char *res;

  		/* apre il file */
  fd=fopen("array.txt", "r");
  if( fd==NULL ) {
    perror("Errore in apertura del file");
    exit(1);
  }


		/* legge e stampa fino all'eof */
  while(1) {
    res=fgets(buf, 200, fd);
    if( res==NULL )
      break;
    printf("%s", buf);
  }


		/* ricomincia dall'inizio */
  rewind(fd);


                /* legge e stampa fino all'eof */
  while(1) {
    res=fgets(buf, 200, fd);
    if( res==NULL )
      break;
    printf("%s", buf);
  }


		/* chiude il file */
  fclose(fd);

  return 0;
}