fseek, _fseeki64fseek, _fseeki64

Déplace le pointeur de fichier vers un emplacement spécifié.Moves the file pointer to a specified location.

SyntaxeSyntax

int fseek(
   FILE *stream,
   long offset,
   int origin
);
int _fseeki64(
   FILE *stream,
   __int64 offset,
   int origin
);

ParamètresParameters

streamstream
Pointeur désignant la structure FILE.Pointer to FILE structure.

offsetoffset
Nombre d’octets à partir d’origin.Number of bytes from origin.

originorigin
Position initiale.Initial position.

Valeur de retourReturn Value

En cas de réussite, fseek et _fseeki64 retourne 0.If successful, fseek and _fseeki64 returns 0. Dans le cas contraire, une valeur différente de zéro est retournée.Otherwise, it returns a nonzero value. Sur les appareils incapables de rechercher, la valeur de retour n’est pas définie.On devices incapable of seeking, the return value is undefined. Si Stream est un pointeur null ou si origin ne fait pas partie des valeurs autorisées décrites ci-dessous, fseek et _fseeki64 appellent le gestionnaire de paramètres non valides, comme décrit dans validation de paramètre.If stream is a null pointer, or if origin is not one of allowed values described below, fseek and _fseeki64 invoke the invalid parameter handler, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions définissent errno sur EINVAL et retournent-1.If execution is allowed to continue, these functions set errno to EINVAL and return -1.

NotesRemarks

Les fonctions fseek et _fseeki64 déplacent le pointeur de fichier (le cas échéant) associé au flux vers un nouvel emplacement qui est décalé d’octets de l' origine.The fseek and _fseeki64 functions moves the file pointer (if any) associated with stream to a new location that is offset bytes from origin. L’opération suivante sur le flux a lieu au nouvel emplacement.The next operation on the stream takes place at the new location. Sur un flux ouvert pour la mise à jour, l’opération suivante peut être une lecture ou une écriture.On a stream open for update, the next operation can be either a read or a write. L’argument origin doit être l’une des constantes suivantes, définies dans stdio. ManutentionThe argument origin must be one of the following constants, defined in STDIO.H:

valeur d’origineorigin value SignificationMeaning
SEEK_CURSEEK_CUR Position actuelle du pointeur de fichier.Current position of file pointer.
SEEK_ENDSEEK_END Fin du fichier.End of file.
SEEK_SETSEEK_SET Début du fichier.Beginning of file.

Vous pouvez utiliser fseek et _fseeki64 pour repositionner le pointeur n’importe où dans un fichier.You can use fseek and _fseeki64 to reposition the pointer anywhere in a file. Le pointeur peut également être positionné au-delà de la fin du fichier.The pointer can also be positioned beyond the end of the file. fseek et _fseeki64 efface l’indicateur de fin de fichier et annule l’effet des appels ungetc antérieurs sur Stream.fseek and _fseeki64 clears the end-of-file indicator and negates the effect of any prior ungetc calls against stream.

Quand un fichier est ouvert pour un ajout de données, la position de fichier actuelle est déterminée par la dernière opération d’E/S, pas par l’emplacement auquel l’écriture suivante se produirait.When a file is opened for appending data, the current file position is determined by the last I/O operation, not by where the next write would occur. Si aucune opération d’E/S ne s’est produite sur un fichier ouvert pour un ajout, la position de fichier correspond au début du fichier.If no I/O operation has yet occurred on a file opened for appending, the file position is the start of the file.

Pour les flux ouverts en mode texte, fseek et _fseeki64 ont une utilisation limitée, car les traductions de retour chariot-saut de ligne peuvent entraîner des résultats inattendus pour fseek et _fseeki64 .For streams opened in text mode, fseek and _fseeki64 have limited use, because carriage return-line feed translations can cause fseek and _fseeki64 to produce unexpected results. Les seules opérations fseek et _fseeki64 dont le fonctionnement est garanti sur les flux ouverts en mode texte sont les suivantes :The only fseek and _fseeki64 operations guaranteed to work on streams opened in text mode are:

  • Recherche avec un décalage de 0 par rapport à toute valeur d’origine.Seeking with an offset of 0 relative to any of the origin values.

  • Recherche à partir du début du fichier avec une valeur de décalage retournée par un appel à ftell lors de l’utilisation de fseek ou _ftelli64 lors de l’utilisation de _fseeki64.Seeking from the beginning of the file with an offset value returned from a call to ftell when using fseek or _ftelli64 when using _fseeki64.

Également en mode texte, Ctrl+Z est interprété comme un caractère de fin de fichier en entrée.Also in text mode, CTRL+Z is interpreted as an end-of-file character on input. Dans les fichiers ouverts en lecture/écriture, fopen et toutes les routines associées vérifient la disponibilité d’un Ctrl + Z à la fin du fichier et le suppriment si possible.In files opened for reading/writing, fopen and all related routines check for a CTRL+Z at the end of the file and remove it if possible. Cela est dû au fait que l’utilisation de la combinaison de fseek et ftell ou _fseeki64 et _ftelli64, pour se déplacer dans un fichier qui se termine par un Ctrl + Z, peut provoquer un comportement incorrect de fseek ou _fseeki64 vers la fin de la txt.This is done because using the combination of fseek and ftell or _fseeki64 and _ftelli64, to move within a file that ends with a CTRL+Z may cause fseek or _fseeki64 to behave improperly near the end of the file.

Quand la bibliothèque CRT ouvre un fichier qui commence par une marque d’ordre d’octet, le pointeur de fichier est positionné après la marque (autrement dit, au début du contenu réel du fichier).When the CRT opens a file that begins with a Byte Order Mark (BOM), the file pointer is positioned after the BOM (that is, at the start of the file's actual content). Si vous devez fseek au début du fichier, utilisez ftell pour obtenir la position initiale et fseek plutôt que de positionner 0.If you have to fseek to the beginning of the file, use ftell to get the initial position and fseek to it rather than to position 0.

Cette fonction verrouille les autres threads pendant l’exécution et est donc thread-safe.This function locks out other threads during execution and is therefore thread-safe. Pour une version sans verrouillage, consultez _fseek_nolock, _fseeki64_nolock.For a non-locking version, see _fseek_nolock, _fseeki64_nolock.

Configuration requiseRequirements

FonctionFunction En-tête requisRequired header
fseekfseek <stdio.h><stdio.h>
_fseeki64_fseeki64 <stdio.h><stdio.h>

Pour plus d’informations sur la compatibilité, voir consultez Compatibilité.For additional compatibility information, see Compatibility.

ExempleExample

// crt_fseek.c
// This program opens the file FSEEK.OUT and
// moves the pointer to the file's beginning.

#include <stdio.h>

int main( void )
{
   FILE *stream;
   char line[81];
   int  result;

   if ( fopen_s( &stream, "fseek.out", "w+" ) != 0 )
   {
      printf( "The file fseek.out was not opened\n" );
      return -1;
   }
   fprintf( stream, "The fseek begins here: "
                    "This is the file 'fseek.out'.\n" );
   result = fseek( stream, 23L, SEEK_SET);
   if( result )
      perror( "Fseek failed" );
   else
   {
      printf( "File pointer is set to middle of first line.\n" );
      fgets( line, 80, stream );
      printf( "%s", line );
    }
   fclose( stream );
}
File pointer is set to middle of first line.
This is the file 'fseek.out'.

Voir aussiSee also

E/S de fluxStream I/O
fopen, _wfopenfopen, _wfopen
ftell, _ftelli64ftell, _ftelli64
_lseek, _lseeki64_lseek, _lseeki64
rewindrewind