Freigeben über


_lseek, _lseeki64

Verschiebt einen Dateizeiger zum angegebenen Speicherort.

Syntax

long _lseek(
   int fd,
   long offset,
   int origin
);
__int64 _lseeki64(
   int fd,
   __int64 offset,
   int origin
);

Parameter

fd
Dateideskriptoren, die auf eine geöffnete Datei verweisen.

offset
Anzahl der Bytes aus origin

origin
Ursprüngliche Position.

Rückgabewert

_lseek gibt den offset in Bytes der neuen Position vom Anfang der Datei zurück. _lseeki64 gibt den offset in einer ganzen Zahl mit 64-Bit zurück. Die Funktion gibt -1L zurück, um einen Fehler anzuzeigen. Wenn ein ungültiger Parameter, z. B. ein ungültiger Dateideskriptor, oder der Wert für origin "ungültig" oder die angegebene offset Position vor dem Anfang der Datei übergeben wird, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EBADFein und geben -1L zurück. Auf Geräten, die über keine Suchfunktion verfügen (z.B. Terminals oder Drucker), ist der Rückgabewert undefiniert.

Weitere Informationen zu diesen und anderen Fehlercodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Hinweise

Die _lseek Funktion verschiebt den dateizeiger zugeordneten fd Dateizeiger an einen neuen Speicherort, offset von dem Bytes stammen origin. Der nächste Vorgang für die Datei tritt am neuen Speicherort auf. Das origin Argument muss eine der folgenden Konstanten sein, die in Stdio.h definiert sind.

Wert vom Typ origin Beschreibung
SEEK_SET Anfang der Datei
SEEK_CUR Aktuelle Position des Dateizeigers
SEEK_END Ende der Datei

Sie können _lseek verwenden, um den Zeiger überall in eine Datei oder über das Ende der Datei zu verschieben.

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

Routine Erforderlicher Header
_lseek <io.h>
_lseeki64 <io.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Libraries

Alle Versionen der C-Laufzeitbibliotheken.

Beispiel

// crt_lseek.c
/* This program first opens a file named lseek.txt.
* It then uses _lseek to find the beginning of the file,
* to find the current position in the file, and to find
* the end of the file.
*/

#include <io.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>

int main( void )
{
   int fh;
   long pos;               /* Position of file pointer */
   char buffer[10];

   _sopen_s( &fh, "crt_lseek.c_input", _O_RDONLY, _SH_DENYNO, 0 );

   /* Seek the beginning of the file: */
   pos = _lseek( fh, 0L, SEEK_SET );
   if( pos == -1L )
      perror( "_lseek to beginning failed" );
   else
      printf( "Position for beginning of file seek = %ld\n", pos );

   /* Move file pointer a little */
    _read( fh, buffer, 10 );

   /* Find current position: */
   pos = _lseek( fh, 0L, SEEK_CUR );
   if( pos == -1L )
      perror( "_lseek to current position failed" );
   else
      printf( "Position for current position seek = %ld\n", pos );

   /* Set the end of the file: */
   pos = _lseek( fh, 0L, SEEK_END );
   if( pos == -1L )
      perror( "_lseek to end failed" );
   else
      printf( "Position for end of file seek = %ld\n", pos );

   _close( fh );
}

Eingabe: crt_lseek.c_input

Line one.
Line two.
Line three.
Line four.
Line five.

Output

Position for beginning of file seek = 0
Position for current position seek = 10
Position for end of file seek = 57

Siehe auch

E/A auf niedriger Ebene
fseek, _fseeki64
_tell, _telli64