Compartir a través de


_lseek, _lseeki64

Mueve un puntero de archivo a la ubicación especificada.

Sintaxis

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

Parámetros

fd
Descriptor de archivo que hace referencia a un archivo abierto.

offset
Número de bytes desde origin.

origin
Posición inicial.

Valor devuelto

_lseek devuelve el desplazamiento (en bytes) de la nueva posición desde el principio del archivo. _lseeki64 devuelve el desplazamiento de un entero de 64 bits. La función devuelve -1L para indicar un error. Si se pasa un parámetro no válido, como un descriptor de archivo incorrecto, o el valor de origin no es válido o la posición especificada por offset es antes del principio del archivo, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones establecen errno en EBADFy devuelven -1L. En los dispositivos que no pueden realizar búsquedas (como los terminales y las impresoras), el valor devuelto es indefinido.

Para obtener más información sobre estos y otros códigos de error, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

La _lseek función mueve el puntero de archivo asociado fd a una nueva ubicación que es offset bytes de origin. Se produce la siguiente operación en el archivo en la nueva ubicación. El origin argumento debe ser una de las constantes siguientes, que se definen en Stdio.h.

Valor de origin Descripción
SEEK_SET Inicio del archivo.
SEEK_CUR Posición actual del puntero de archivo.
SEEK_END Final del archivo.

Puede usar _lseek para volver a colocar el puntero en cualquier lugar de un archivo o más allá del final del archivo.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

Routine Encabezado necesario
_lseek <io.h>
_lseeki64 <io.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Bibliotecas

Todas las versiones de las bibliotecas en tiempo de ejecución de C.

Ejemplo

// 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.

Salida

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

Consulte también

E/S de bajo nivel
fseek, _fseeki64
_tell, _telli64