_lseek _lseeki64
Přesune ukazatel souboru do zadaného umístění.
long _lseek(
int fd,
long offset,
int origin
);
__int64 _lseeki64(
int fd,
__int64 offset,
int origin
);
Parametry
fd
Popisovač souboru ve vztahu k otevření souboru.Posun
Počet bajtů od původu.původ
Počáteční pozice.
Vrácená hodnota
_lseekVrátí posun, bajtů od začátku nového umístění souboru._lseeki64Vrátí posun 64bitové celé číslo.Funkce vrátí –1L udávající chybu.Pokud je předán neplatný parametr jako chybný soubor deskriptoru nebo hodnotu pro původu je neplatný nebo pozice určené Posun je před začátek souboru je vyvoláno neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, nastavit tyto funkce errno na EBADF a L-1.Zařízení je neschopen usilující o (jako například terminály a tiskárny) vrácená hodnota je undefined.
Další informace o těchto a jiných kódů chyb naleznete v _doserrno, kód chyby, _sys_errlist a _sys_nerr.
Poznámky
_lseek Funkce přesune ukazatel souboru spojené s fd do nového umístění, která je Posun bajtů z původu.Další operace na souboru dochází v novém umístění.Původu argument musí být jedna z následujících konstant, které jsou definovány v Stdio.h.
SEEK_SET
Začátek souboru.SEEK_CUR
Aktuální pozice ukazatele souboru.SEEK_END
Konec souboru.
Můžete použít _lseek přemístění ukazatele myši kdekoli v souboru nebo za koncem souboru.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_lseek |
<io.h> |
_lseeki64 |
<io.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Knihovny
Všechny verze C Runtime knihovny.
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ýsledek
Position for beginning of file seek = 0
Position for current position seek = 10
Position for end of file seek = 57