Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

rewind - Lese-/Schreibzeiger auf Dateianfang positionieren

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

void rewind(FILE *dz);

rewind positioniert den Lese-/Schreibzeiger der Datei mit Dateizeiger dz auf Dateianfang.

Hinweise

Die Aufrufe rewind(dz) und fseek(dz,0L,SEEK_SET) bzw. fseek64(dz,0LL,SEEK_SET) sind äquivalent, außer dass rewind kein Ergebnis zurückliefert.

Auf Systemdateien kann nicht positioniert werden (SYSDTA, SYSOUT, SYSLST).

Werden in eine Textdatei neue Sätze geschrieben (geöffnet zum Neuerstellen oder Anhängen) und erfolgt ein rewind-Aufruf, dann werden zunächst ggf. restliche Daten aus dem Puffer in die Datei geschrieben und mit Zeilenende (\n) abgeschlossen.
Ausnahme bei ANSI-Funktionalität:
Wenn die Daten einer ISAM-Datei im Puffer nicht mit einem Neue-Zeile-Zeichen enden, bewirkt rewind keinen Zeilenwechsel (bzw. Satzwechsel). D.h., die Daten werden beim Schreiben aus dem Puffer nicht automatisch mit einem Neue-Zeile-Zeichen abgeschlossen.
Nachfolgende Daten verlängern den Satz in der Datei. Beim Lesen einer ISAM-Datei werden daher nur Neue-Zeile-Zeichen eingelesen, die vom Programm explizit geschrieben wurden.

Ein erfolgreicher Aufruf der Funktion rewind löscht das EOF-Flag der Datei und hebt alle Effekte der vorangegangenen ungetc-Aufrufe für diese Datei auf.

Satz-E/A

rewind ist auch auf Dateien mit Satz-E/A unverändert anwendbar.

Beispiel

Folgendes Programm verarbeitet eine Datei zuerst ab dem 11. Zeichen bis Dateiende und anschließend ab Dateianfang (funktioniert nur mit Binärdateien, in diesem Fall nur mit SAM- und PAM-Dateien).

#include <stdio.h>
int main(void)
{
   FILE *fp;
   int c,i;
   fp = fopen("input","rb");
               /* die ersten 10 Zeichen überlesen */
   fseek(fp,10L,SEEK_SET);
   while((c=getc(fp)) != EOF)
         putc((char)c,stdout);
               /* auf Dateianfang positionieren */
   rewind(fp);
   for(i=0; i<10; i++)
      {
        c=getc(fp);
        putc((char)c,stdout);
      }
   fclose(fp);
   return 0;
}

Siehe auch  fseek, fseek64, fsetpos, fsetpos64