C ++ fseek () - C ++ Standardbibliothek

Die Funktion fseek () in C ++ setzt den Dateipositionsindikator für den angegebenen Dateistream.

Die Funktion fseek () ist in der Header-Datei definiert.

fseek () Prototyp

 int fseek (DATEI * Stream, langer Offset, int Ursprung);

Wenn die Datei im Binärmodus geöffnet wird, ist die neue Position des Dateizeigers genau um Bytes vom Ursprung versetzt.

Wenn die Datei im Textmodus geöffnet wird, werden folgende Werte für den Versatz unterstützt:

  • Null: Es funktioniert mit jedem Ursprungswert, dh SEEK_SET, SEEK_CUR und SEEK_END.
  • Von einem Aufruf von ftell (stream) zurückgegebener Wert: Funktioniert nur mit dem Ursprung von SEEK_SET.

Wenn der Stream breit ausgerichtet ist, werden die Einschränkungen sowohl für Text- als auch für Binär-Streams angewendet, dh das Ergebnis von ftell ist mit SEEK_SET zulässig, und der Nullpunktversatz ist von SEEK_SET und SEEK_CUR zulässig, nicht jedoch von SEEK_END.

Die Funktion fseek macht auch die Auswirkungen von ungetc rückgängig und löscht gegebenenfalls den Status des Dateiende.

Wenn ein Lese- oder Schreibfehler auftritt, wird der Fehler gesetzt und die Dateiposition wird nicht beeinflusst.

fseek () Parameter

  • stream: Der zu ändernde Dateistream.
  • Offset: Die Anzahl der Zeichen, die vom Ursprung verschoben werden sollen.
  • Ursprung: Position, die als Referenz zum Hinzufügen zum Versatz verwendet wird. Es kann folgende Werte haben:
fseek () Ursprungswerte
Wert Beschreibung
SEEK_SET Beginn der Datei
SEEK_CUR Aktuelle Position des Dateizeigers
SEEK_END Ende der Datei

fseek () Rückgabewert

  • Bei Erfolg gibt die Funktion fseek () Null zurück, andernfalls ungleich Null.

Beispiel: Wie funktioniert die Funktion fseek ()?

 #include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Name: Erica Alter: 25 Stadt: Berlin

Interessante Beiträge...