_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
_doserrno
errno
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