_lseek, _lseeki64

Verschiebt den Dateizeiger für den angegebenen Speicherort.

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

Parameter

  • fd
    Dateideskriptor, der eine offene Datei verweist.

  • Offset
    Anzahl von Bytes vom Ursprung.

  • Ursprung
    Anfangsposition.

Rückgabewert

_lseek gibt den Offset in Bytes vom Anfang der Position der neuen Datei zurück._lseeki64 gibt den Offset in eine 64-Bit-Ganzzahl zurück.Die 1L – Funktion gibt einen Fehler zurück, um anzugeben.Wenn sie übergebenen Parameter ist ein ungültiger, z. B. ein ungültiger Dateideskriptor oder der Wert für Ursprung ist ungültig, oder die durch Offset angegeben ist, wird vor dem Anfang der Datei, der ungültige Parameter Klassenhandler wird aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung fortgesetzt werden kann, darf dieses Features zu errno festlegen EBADF zurückzugebenden und -1L.Auf den Geräten, die vom Suche (wie Terminals und Druckern nicht) ist, wird der Rückgabewert nicht definiert.

Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die Funktion _lseek der Dateizeiger verschoben, der fd an eine neue Position zugeordnete Bytes der Offsetvom Ursprungbefindet.Der folgende Vorgang in der Datei tritt am neuen Speicherort.Das Ursprungs-Argument muss eine der folgenden Konstanten handeln, die in Stdio.h definiert sind.

  • SEEK_SET
    Anfang der Datei.

  • SEEK_CUR
    Aktuelle Position des Dateizeigers.

  • SEEK_END
    Dateiende.

Sie können _lseek verwenden, um den Zeiger auf eine beliebige Stelle in einer Datei oder hinter dem Ende der Datei hinaus neu anzuordnen.

Anforderungen

Routine

Erforderlicher Header

_lseek

<io.h>

_lseeki64

<io.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken

Alle Versionen Cs.

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

Referenz

E/A auf niedriger Ebene

fseek, _fseeki64

_tell, _telli64