_lseek, _lseeki64

Déplace un pointeur de fichier vers l’emplacement spécifié.

Syntaxe

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

Paramètres

fd
Descripteur de fichier qui fait référence à un fichier ouvert.

offset
Nombre d’octets à partir de origin.

origin
Position initiale.

Valeur retournée

_lseek retourne l’offset, en octets, de la nouvelle position à partir du début du fichier. _lseeki64 retourne l’offset dans un entier 64 bits. La fonction retourne -1L pour indiquer une erreur. Si un paramètre non valide est passé, tel qu’un descripteur de fichier incorrect, ou si la valeur n’est origin pas valide ou la position spécifiée par offset est avant le début du fichier, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à se poursuivre, ces fonctions affectent à errno la valeur EBADF et retournent -1L. Sur les appareils sans fonctionnalités de recherche (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 codes d’erreur, consultez errno, _doserrno, _sys_errlistet _sys_nerr.

Notes

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

Valeur origin Description
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.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
_lseek <io.h>
_lseeki64 <io.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

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

E/S de bas niveau
fseek, _fseeki64
_tell, _telli64