#include <stdio.h> // <cstdio> en C++
void rewind( FILE * stream );
Cette fonction permet de réinitialiser un flux en placant la tête de lecture en début de fichier (ou plus généralement de se remettre en début de flux) et en effaçant aussi l'indicateur d'erreur du flux.
fseek(stream, 0L, SEEK_SET);
suivit d'un appel à
clearerr(stream);
.
Cette fonction ne renvoit aucune valeur.
FILE *
) passé en paramètre est invalide.Voici un exemple de code qui relit deux fois le début d'un fichier avant de lire la suite du programme.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <stdio.h> #include <stdlib.h> #define BLOCK_SIZE 256 int main(void) { // On créer un fichier binaire de départ qu'on va lire par la suite. FILE * file = fopen("data.bin", "wb"); char buffer[BLOCK_SIZE]; for(int i=0; i<BLOCK_SIZE; i++) buffer[i] = i; fwrite(buffer, BLOCK_SIZE, 1, file); fclose(file); // On tente maitenant de lire le fichier à plusieurs reprises, sans rouvrir le fichier. file = fopen("data.bin", "rb"); for(int i=1; i<=10; i++) { rewind(file); for(int j=0; j<i; j++ ) { printf("%d ", fgetc(file)); } puts(""); } // On ferme le fichier fclose(file); return EXIT_SUCCESS; } |
Et voici les résultats affichés par l'exemple ci-dessus.
0 0 1 0 1 2 0 1 2 3 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4 5 6 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 9
C89 / C99 / C11 / C18
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :