rewind()

rewind() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

rewind() dient dazu die aktuelle Schreibe/Lese-Position in der angegebenen Datei bzw im angegebenem Stream an den Anfang zurück zu setzen.

Signatur

#include <stdio.h>
void rewind(FILE *file);

file: Zeiger auf geöffneten Stream.

Der Aufruf von rewind() bewirkt das gleiche wie der Aufruf von

fseek (file, 0, SEEK_SET);

rewind() setzt jedoch zusätzlich den Fehler-Indikator zurück.
Wurde die Datei bzw. der Stream zum Lesen und Schreiben geöffnet kann mit rewind() zwischen Lesen und Schreiben gewechselt werden.

Fehlerquellen

Durch den automatischen Wechsel zwischen Schreib- und Lesemodus kann es zu Fehlern kommen, wenn man die falschen Operationen auf den Stream ausführt.

Beispiel

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
  char text[] = "proggen.org", buffer[12];       
  int i;
  FILE *file = fopen ("test.txt", "w");              // neue Datei erstellen
  if (file != NULL)                                  // prüfe ob die Datei korrekt erstellt wurde
  {
    fputs (text, file);                              // screibe Text in die Datei 
    fclose (file);                                   // Datei schließen
  }
 
  file = fopen ("test.txt", "r");                    // Datei zum Lesen öffnen
  if (file != NULL)                                  // prüfe ob die Datei korrekt geöffnet wurde
  {
    for (i = 0; i < 5; i++)         
    {
      fgets (buffer, 12, file);                      // Daten aus der Datei auslesen
      printf ("%s\n", buffer);                       // Daten ausgeben
      rewind (file);                                 // Datei zurücksetzen
    }
    fclose (file);                                   // Datei schließen
  }
 
  return EXIT_SUCCESS;
}

Ausgabe:

proggen.org
proggen.org
proggen.org
proggen.org
proggen.org

siehe auch