Udostępnij za pośrednictwem


_lseek, _lseeki64

Przenosi wskaźnik pliku w określonej lokalizacji.

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

Parametry

  • fd
    Plik deskryptora odnoszące się do otwartego pliku.

  • Przesunięcie
    Liczba bajtów z pochodzenia.

  • pochodzenie
    Początkowe położenie.

Wartość zwracana

_lseekZwraca wartość przesunięcia, w bajtach, nowe położenie od początku pliku._lseeki64Zwraca całkowitą 64-bitowe przesunięcie.Funkcja zwraca –1L, aby wskazać błąd.Jeżeli nie przekazano nieprawidłowy parametr, takie jak deskryptor pliku uszkodzonych lub wartość dla pochodzenia jest nieprawidłowa lub w pozycji określonej przez przesunięcia jest przed rozpoczęciem pliku obsługi nieprawidłowy parametr jest wywoływany, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EBADF i zwrócić wartość-1 L.Na urządzeniach niezdolny do znalezienia (takich jak terminale i drukarki) zwracana wartość jest niezdefiniowana.

Aby uzyskać więcej informacji na temat tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

Uwagi

_lseek Funkcji przesuwa wskaźnik pliku, skojarzone z fd do nowej lokalizacji, która jest przesunięcia bajtów z pochodzenia.Następna operacja na pliku występuje w nowej lokalizacji.Pochodzenia argument musi mieć jedną z następujących stałych, które są zdefiniowane w Stdio.h.

  • SEEK_SET
    Początku pliku.

  • SEEK_CUR
    Bieżąca pozycja wskaźnika pliku.

  • SEEK_END
    Koniec pliku.

Można użyć _lseek , aby przesunąć kursor w dowolnym miejscu w pliku lub poza koniec pliku.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_lseek

<io.h>

_lseeki64

<io.h>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje biblioteki uruchomieniowej c.

Przykład

// 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 );
}

Dane wejściowe: crt_lseek.c_input

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

Dane wyjściowe

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

Zobacz też

Informacje

Niskiego poziomu we/wy

fseek, _fseeki64

_tell, _telli64