Compartilhar via


_lseek, _lseeki64

Move um ponteiro de arquivo no local especificado.

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

Parâmetros

  • fd
    O descritor de Arquivo que faz referência a um arquivo aberto.

  • deslocamento
    Número de bytes de origem.

  • origem
    Posição inicial.

Valor de retorno

_lseek retorna o deslocamento, em bytes, da nova posição desde o início do arquivo. _lseeki64 retorna o deslocamento em um inteiro de 64 bits. A função retorna – 1L para indicar um erro. Se transmitido para um parâmetro inválido, como um descritor de arquivo incorreto, ou o valor da origem não são válidos ou a posição especificada pelo deslocamento é antes do início do arquivo, o manipulador inválido do parâmetro seja invocado, conforme descrito em Validação do parâmetro. Se a execução for permitida continuar, esse errno definido funções a EBADF e a ser retornado -1L. Dispositivos pôde buscar (como os terminais e impressoras), o valor de retorno será indefinido.

Para obter mais informações sobre esses e outros códigos de erro, consulte _doserrno, errno, _sys_errlist, and _sys_nerr.

Comentários

A função de _lseek move o ponteiro de arquivo associado com fd para um novo local que é o deslocamento de bytes de origem. A próxima operação no arquivo ocorre no novo local. O argumento de origem deve ser uma das seguintes constantes, que são definidas em Stdio.h.

  • SEEK_SET
    Início do arquivo.

  • SEEK_CUR
    A posição atual do ponteiro de arquivo.

  • SEEK_END
    Fim de arquivo.

Você pode usar para _lseek reposicionar o ponteiro em qualquer lugar em um arquivo ou além do final do arquivo.

Requisitos

Rotina

Cabeçalho necessário

_lseek

<io.h>

_lseeki64

<io.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.

Bibliotecas

Todas as versões das Bibliotecas em tempo de execução C.

Exemplo

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

Entrada: crt_lseek.c_input

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

Saída

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

Consulte também

Referência

E/S de nível inferior

fseek, _fseeki64

_tell, _telli64