Condividi tramite


_lseek, _lseeki64

Sposta il puntatore del file nella posizione specificata.

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

  • origine
    posizione iniziale.

Valore restituito

_lseek restituisce l'offset, in byte, della nuova posizione all'inizio del file._lseeki64 restituisce l'offset in un Integer a 64 bit.La funzione restituisce - 1L per indicare un errore.Se passato un parametro non valido, ad esempio si immette un descrittore del file, o al valore per origine non è valida o la posizione specificata da offset precede l'inizio del file, il gestore non valido di parametro sia richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni impostate errno in EBADF e restituiscono -1L.Nei dispositivi incapaci di individuare quali i terminal e stampanti), il valore restituito è definito.

Per ulteriori informazioni su questi e altri codici di errore, vedere _doserrno, errno, _sys_errlist e _sys_nerr.

Note

_lseek la funzione consente di spostare il puntatore del file associato fd in una nuova posizione in cui è offset byte da origine.L'operazione seguente nel file si trova nella nuova posizione.origine l'argomento deve essere una delle costanti, definite in Stdio.h.

  • SEEK_SET
    Inizio del file.

  • SEEK_CUR
    Posizione corrente del puntatore del file.

  • SEEK_END
    Fine del file.

È possibile utilizzare _lseek per riposizionare il puntatore in un punto file o oltre la fine del file.

Requisiti

routine

Intestazione di associazione

_lseek

<io.h>

_lseeki64

<io.h>

Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.

Librerie

Tutte le versioni di Librerie di runtime del linguaggio 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

Vedere anche

Riferimenti

L'I/O di basso livello

fseek, _fseeki64

_tell, _telli64