Condividi tramite


_lseek, _lseeki64

Sposta un puntatore di file nella posizione specificata.

Sintassi

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

Parametri

fd
Descrittore del file che fa riferimento a un file aperto.

offset
Numero di byte da origin.

origin
Posizione iniziale.

Valore restituito

_lseek restituisce l'offset, in byte, della nuova posizione dall'inizio del file. _lseeki64 restituisce l'offset in un intero a 64 bit. La funzione restituisce -1L per indicare un errore. Se è stato passato un parametro non valido, ad esempio un descrittore di file non valido o il valore per origin non è valido o la posizione specificata da offset è prima dell'inizio del file, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni impostano errno su EBADF e restituiscono -1L. Nei dispositivi che non supportano la ricerca (ad esempio terminali e stampanti), il valore restituito è indefinito.

Per altre informazioni su questi e altri codici di errore, vedere errno, _doserrno, _sys_errliste _sys_nerr.

Osservazioni:

La _lseek funzione sposta il puntatore del file associato a fd in un nuovo percorso byte offset da origin. L'operazione successiva nel file viene eseguita nella nuova posizione. L'argomento origin deve essere una delle costanti seguenti, definite in Stdio.h.

Valore origin Descrizione
SEEK_SET Inizio del file.
SEEK_CUR Posizione corrente del puntatore del file.
SEEK_END Fine del file.

È possibile usare _lseek per riposizionare il puntatore in qualsiasi punto in un file oppure oltre la fine del file.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione obbligatoria
_lseek <io.h>
_lseeki64 <io.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Librerie

Tutte le versioni delle librerie di runtime C.

Esempio

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

Input: crt_lseek.c_input

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

Output

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

Vedi anche

I/O di basso livello
fseek, _fseeki64
_tell, _telli64