_lseek, _lseeki64

Přesune ukazatel souboru do zadaného umístění.

Syntaxe

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

Parametry

fd
Popisovač souboru odkazující na otevřený soubor.

offset
Početch origin

origin
Počáteční pozice.

Vrácená hodnota

_lseek vrátí posun v bajtech nové pozice od začátku souboru. _lseeki64 vrátí posun v 64bitovém celočíselném čísle. Funkce vrátí hodnotu -1L, která označuje chybu. Pokud byl předán neplatný parametr, například chybný popisovač souboru nebo hodnota pro origin hodnotu je neplatná nebo je pozice zadaná offset před začátkem souboru, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je provádění povoleno pokračovat, tyto funkce jsou nastavené errno na EBADF hodnotu -1L a vrátí hodnotu -1L. Na zařízeních, která nemohou hledat (například terminály a tiskárny), je návratová hodnota nedefinovaná.

Další informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

Poznámky

Funkce _lseek přesune ukazatel souboru přidružený fd k novému umístění, ze kterého se offset nachází bajty .origin Další operace se souborem probíhá v novém umístění. Argument origin musí být jednou z následujících konstant, které jsou definovány v stdio.h.

origin hodnota Popis
SEEK_SET Začátek souboru.
SEEK_CUR Aktuální pozice ukazatele souboru
SEEK_END Konec souboru.

Ukazatel můžete _lseek přemístit kdekoli v souboru nebo za konec souboru.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor
_lseek <io.h>
_lseeki64 <io.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Knihovny

Všechny verze knihoven runtime jazyka C.

Příklad

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

Vstup: crt_lseek.c_input

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

Výstup

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

Viz také

Vstupně-výstupní operace nízké úrovně
fseek, _fseeki64
_tell, _telli64