Partager via


_lseek, _lseeki64

Déplace le pointeur de fichier vers l'emplacement spécifié.

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

Paramètres

  • fd
    Descripteurs de fichier faisant référence au fichier ouvert.

  • offset
    Nombre d'octets depuis origine.

  • origin
    Position initiale.

Valeur de retour

_lseek retourne le décalage, en octets, de la nouvelle position depuis le début du fichier. _lseeki64 retourne le décalage d'un entier 64 bits. La fonction retourne – 1L pour indiquer une erreur. Si on lui transmet un paramètre non valide, tel qu'un mauvais descripteur de fichier, ou si la valeur pour origine n'est pas valide ou si une position spécifiée par le décalage est antérieure au début du fichier, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions définissent errno à EBADF et retournent -1L. Sur des périphériques incapables de rechercher (tels que les terminaux et les imprimantes), la valeur de retour n'est pas définie.

Pour plus d'informations sur ces codes d'erreur et d'autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.

Notes

La fonction _lseek déplace le pointeur de fichier associé à fd vers un nouvel emplacement qui est des octets offset depuis origin. L'opération suivante sur le fichier se produit au nouvel emplacement. L'argument origine doit être l'une des constantes suivantes, qui sont définies dans Stdio.h.

  • SEEK_SET
    Début du fichier.

  • SEEK_CUR
    Position actuelle du pointeur de fichier.

  • SEEK_END
    Fin du fichier.

Vous pouvez utiliser _lseek pour repositionner le pointeur n'importe où dans un fichier ou au delà de la fin du fichier.

Configuration requise

Routine

En-tête requis

_lseek

<io.h,>

_lseeki64

<io.h,>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Bibliothèques

Toutes les versions des bibliothèques Runtime C.

Exemple

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

Entrée : crt_lseek.c_input

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

Sortie

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

Voir aussi

Référence

E/S niveau bas

fseek, _fseeki64

_tell, _telli64