In questa lezione parleremo di rewind in C, cioè della funzione che permette di riposizionarsi nuovamente all’inizio di un file.
La sintassi della funzione rewind in C è dunque questa:
void rewind(FILE *fp);
Dove FILE *fp è il puntatore a FILE ottenuto dalla precedente chiamata fopen.
Esempio d’uso di rewind in C
Leggiamo un file riga per riga e quando arriviamo alla fine, chiamiamo la funzione rewind che effettuerà un secondo ciclo di lettura.
In definitiva stamperemo il contenuto del file due volte.
Supponiamo dunque che il file alunni.txt contenga i dati degli alunni, tipo nome, cognome e voto di una materia. Quindi con la funzione fopen apriamo questo file e controlliamo che non ci siano errori nell’operazione di apertura del file.
Leggiamo con la funzione fgets le stringhe fino alla fine del file e dopo riportiamo, con la funzione rewind, il puntatore all’inizio del file e ripetiamo l’operazione di lettura.
Ecco dunque il listato completo:
#include<stdlib.h>
#include<stdio.h>
#define N 100
int main() {
FILE *fp;
char buf[N];
if((fp=fopen("alunni.txt", "rt"))==NULL) {
printf("Errore nell'apertura del file'");
exit(1);
}
/* legge e stampa fino alla fine del file */
while(!feof(fp)) {
fgets(buf,N,fp);
printf("%s", buf);
}
/* riporta il file pointer all'inizio */
rewind(fp);
printf("\nStampo la seconda volta\n");
/* legge e stampa fino alla fine del file */
while(!feof(fp)) {
fgets(buf,N, fp);
printf("%s", buf);
}
fclose(fp);
return 0;
}
Chiaramente questo è solo un esempio d’uso della funzione rewind in C, prossimamente vedremo altri esempi.
Alcuni link utili
Allocazione dinamica della memoria con malloc
Esercitazione sulle struct in C
Realizzare un menù di scelta in C
Come sommare gli elementi della cornice esterna
Ricerca elementi in una matrice