Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verschiebt den Dateizeiger in einen angegebenen Speicherort
Syntax
int fseek(
FILE *stream,
long offset,
int origin
);
int _fseeki64(
FILE *stream,
__int64 offset,
int origin
);
Parameter
stream
Zeiger zur FILE -Struktur.
offset
Anzahl der Bytes aus origin
origin
Ursprüngliche Position.
Rückgabewert
fseek und _fseeki64 geben bei Erfolg 0 zurück. Andernfalls gibt es einen Wert ungleich 0 (null) zurück. Auf Geräten, die Suchvorgänge nicht unterstützen, ist der Rückgabewert nicht definiert. Wenn stream es sich um einen Nullzeiger handelt oder es origin sich nicht um einen der unten beschriebenen zulässigen Werte handelt, fseek und _fseeki64 rufen Sie den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben -1 zurück.
Hinweise
Mit fseek den Funktionen wird _fseeki64 der Dateizeiger (falls vorhanden) stream an einen neuen Speicherort verschoben, offset von dem Bytes stammen origin. Der nächste Vorgang im Stream tritt am neuen Speicherort auf. Für einen updatebereiten Stream kann der nächste Vorgang ein Lese- oder Schreibvorgang sein. Das Argument origin muss eine der folgenden Konstanten sein, die in STDIO.H:
| Origin-Wert | Bedeutung |
|---|---|
SEEK_CUR |
Aktuelle Position des Dateizeigers |
SEEK_END |
Ende der Datei |
SEEK_SET |
Anfang der Datei |
Sie können fseek und _fseeki64 verwenden, um den Zeiger an einer beliebigen Stelle in einer Datei neu zu positionieren. Der Zeiger kann auch nach dem Ende der Datei positioniert werden. fseek und _fseeki64 löscht den End-of-File-Indikator und negiert die Wirkung aller vorherigen ungetc Aufrufe gegen stream.
Wenn eine Datei zum Anfügen von Daten geöffnet wird, wird die aktuelle Dateiposition vom letzten E/A-Vorgang nicht dadurch bestimmt, wo der nächste Schreibvorgang erfolgt. Wenn noch kein E/A-Vorgang für eine zum Anhängen geöffnete Datei stattgefunden hat, ist die Dateiposition der Anfang der Datei.
Für Datenströme, die im Textmodus geöffnet wurden und fseek _fseeki64 eingeschränkt verwendet werden, da Wagenrücklauf-Zeilenvorschubübersetzungen zu unerwarteten Ergebnissen führen und _fseeki64 zu unerwarteten Ergebnissen führen fseek können. Die einzigen fseek Und _fseeki64 Vorgänge, die garantiert an Datenströmen funktionieren, die im Textmodus geöffnet wurden, sind:
Suchen mit einem Offset von 0 hinsichtlich der ursprünglichen Werte
Suchen sie vom Anfang der Datei mit einem Offsetwert, der von einem Aufruf
ftellbei Verwendungfseekoder_ftelli64bei Verwendung_fseeki64zurückgegeben wird.
Im Textmodus wird STRG+Z als ein Dateiendezeichen in der Eingabe interpretiert. In für Lese-/Schreibvorgänge geöffneten Dateien, überprüfen fopen und alle verknüpften Routinen das Dateiende auf STRG+Z und entfernt die Markierung, sofern möglich. Es wird entfernt, da die Verwendung der Kombination von fseek und oder ftell oder _ftelli64_fseeki64 , um innerhalb einer Datei zu verschieben, die mit einem STRG+Z endet, möglicherweise zu einem unsachgemäßen Verhalten am Ende der Datei führen fseek oder _fseeki64 verhalten.
Wenn das CRT eine Datei öffnet, die mit einem Byte Order Mark (BOM) beginnt, wird der Dateizeiger nach der BOM positioniert. (Das heißt, sie wird am Anfang des tatsächlichen Inhalts der Datei positioniert). Wenn Sie am Anfang der Datei müssen fseek , verwenden ftell Sie diese, um die Anfangsposition abzurufen, und dann fseek an diese Position statt an position 0.
Diese Funktion sperrt alle anderen Threads während der Ausführung und ist daher threadsicher. Eine nicht sperrende Version finden Sie unter _fseek_nolock, _fseeki64_nolock.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
| Funktion | Erforderlicher Header |
|---|---|
fseek |
<stdio.h> |
_fseeki64 |
<stdio.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_fseek.c
// This program opens the file FSEEK.OUT and
// moves the pointer to the file's beginning.
#include <stdio.h>
int main( void )
{
FILE *stream;
char line[81];
int result;
if ( fopen_s( &stream, "fseek.out", "w+" ) != 0 )
{
printf( "The file fseek.out was not opened\n" );
return -1;
}
fprintf( stream, "The fseek begins here: "
"This is the file 'fseek.out'.\n" );
result = fseek( stream, 23L, SEEK_SET);
if( result )
perror( "Fseek failed" );
else
{
printf( "File pointer is set to middle of first line.\n" );
fgets( line, 80, stream );
printf( "%s", line );
}
fclose( stream );
}
File pointer is set to middle of first line.
This is the file 'fseek.out'.
Siehe auch
Stream-E/A
fopen, _wfopen
ftell, _ftelli64
_lseek, _lseeki64
rewind