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.

Banner Pubblicitario

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

Indice argomenti linguaggio C

La funzione fopen

Banner pubblicitario

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Typedef struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Tavola pitagorica in C

Array multidimensionali

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C