_lseek, _lseeki64
Sposta un puntatore del file nella posizione specificata.
long _lseek(
int fd,
long offset,
int origin
);
__int64 _lseeki64(
int fd,
__int64 offset,
int origin
);
Parametri
fd
Il descrittore del file che fa riferimento a un file aperto.offset
Numero di byte dall'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 viene passato un parametro non valido, ad esempio si immette un descrittore del file, oppure il valore di origine non è valido o la posizione specificata dall'offset viene prima dell'inizio del file, il gestore di parametro non valido non viene richiamato, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni impostano errno a EBADF e restituiscono -1L. Nei dispositivi incapaci di effettuare un ricerca (come ad esempio le stampanti), il valore restituito è indefinito.
Per ulteriori informazioni su questi e altri codici, vedere _doserrno, errno, _sys_errlist, e _sys_nerr.
Note
La funzione _lseek sposta il puntatore del file associato a fd in una nuova posizione offset byte dall'origin. L'operazione successiva nel file si trova nella nuova posizione. L'argomento origine deve essere una delle costanti, definite in Stdio.h.
SEEK_SET
Inizio del file.SEEK_CUR
La posizione corrente del puntatore del file.SEEK_END
Fine del file.
È possibile utilizzare _lseek per riposizionare il puntatore in un file o oltre la fine del file.
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_lseek |
<io.h> |
_lseeki64 |
<io.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
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