Freigeben über


_lseek, _lseeki64

Verschiebt Dateizeiger einen auf der angegebenen Position.

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

Parameter

  • fd
    Dateideskriptor, der eine geöffnete Datei verweist.

  • offset
    Anzahl Bytes vom Ursprung.

  • Ursprung
    Startposition.

Rückgabewert

_lseek gibt den Offset, in Bytes, der neuen Position am Anfang der Datei. _lseeki64 gibt den Offset in einer 64-Bit-Ganzzahl zurück. Die Funktion gibt - 1L zurück, um einen Fehler anzugeben. Wenn sie übergeben werden, ist ein ungültiger Parameter, z ein ungültiger Dateideskriptor oder der Wert für Ursprung ungültig, oder die Position, die durch Offset angegeben wird, ist, bevor der Anfang der Datei, der ungültige Parameterhandler aufgerufen wird, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, dieses Features legen Sie errno auf EBADF und wieder -1L. Auf den Geräten, die vom Suchen (z Anschlüssen und Druckern) nicht sind, wird der Rückgabewert undefiniert.

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

Hinweise

Die Funktion _lseek wird der Dateizeiger, der mit fd an eine neue Position zugeordnet wird, die Offsetbytes vom Ursprung ist. Im folgenden Vorgang in der Datei wird an der neuen Position auf. Das Ursprungsargument muss eine der folgenden Konstanten sein, die in Stdio.h definiert werden.

  • SEEK_SET
    Anfang der Datei.

  • SEEK_CUR
    Aktuelle Position des Dateizeigers.

  • SEEK_END
    Ende der Datei.

Sie können _lseek verwenden, um den Zeiger an jeder Stelle in einer Datei oder im Dateiende hinaus neu anzuordnen.

Anforderungen

Routine

Erforderlicher Header

_lseek

<io.h>

_lseeki64

<io.h>

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

Bibliotheken

Alle Versionen 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.

Ausgabe

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