Participer au site avec un Tip
Rechercher
 

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 :

Fonction rewind

Entête à inclure

#include <stdio.h>  // <cstdio> en C++

Fonction rewind

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.

Cette fonction est donc équivalente à un appel à fseek(stream, 0L, SEEK_SET); suivit d'un appel à clearerr(stream);.

Paramètre

Valeur de retour

Cette fonction ne renvoit aucune valeur.

Code erreur pouvant être retourné

Exemple de code

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;
}
Exemple d'utilisation de la fonction rewind

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 

Conformité

C89 / C99 / C11 / C18

Sujets connexes

fgetpos
fpos_t
fseek
fsetpos
ftell