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;
}