ftell, _ftelli64ftell, _ftelli64

Obtient la position actuelle d’un pointeur de fichier.Gets the current position of a file pointer.

SyntaxeSyntax

long ftell(
   FILE *stream
);
__int64 _ftelli64(
   FILE *stream
);

ParamètresParameters

streamstream
Structure du fichier cible.Target FILE structure.

Valeur de retourReturn Value

ftell et _ftelli64 retournent la position de fichier actuelle.ftell and _ftelli64 return the current file position. La valeur retournée par ftell et _ftelli64 peut ne pas refléter l’offset d’octet physique pour les flux ouverts en mode texte, car le mode texte provoque la traduction du saut de ligne de retour chariot.The value returned by ftell and _ftelli64 may not reflect the physical byte offset for streams opened in text mode, because text mode causes carriage return-line feed translation. Utilisez ftell avec fseek ou _ftelli64 avec _fseeki64 pour revenir correctement aux emplacements de fichiers.Use ftell with fseek or _ftelli64 with _fseeki64 to return to file locations correctly. En cas d’erreur, ftell et _ftelli64 appellent le gestionnaire de paramètres non valides, comme décrit dans validation de paramètre.On error, ftell and _ftelli64 invoke the invalid parameter handler, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions retournent-1L et définissent errno sur l’une des deux constantes définies dans errno. Manutention.If execution is allowed to continue, these functions return -1L and set errno to one of two constants, defined in ERRNO.H. La constante EBADF signifie que l’argument de flux n’est pas une valeur de pointeur de fichier valide ou ne fait pas référence à un fichier ouvert.The EBADF constant means the stream argument is not a valid file pointer value or does not refer to an open file. EINVAL signifie qu’un argument de flux non valide a été passé à la fonction.EINVAL means an invalid stream argument was passed to the function. Sur les appareils qui ne sont pas en mesure de rechercher (tels que les terminaux et les imprimantes) ou lorsque le flux ne fait pas référence à un fichier ouvert, la valeur de retour n’est pas définie.On devices incapable of seeking (such as terminals and printers), or when stream does not refer to an open file, the return value is undefined.

Pour plus d’informations sur ces codes de retour et les autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, return codes.

NotesRemarks

Les fonctions ftell et _ftelli64 récupèrent la position actuelle du pointeur de fichier (le cas échéant) associé au flux.The ftell and _ftelli64 functions retrieve the current position of the file pointer (if any) associated with stream. La position est exprimée sous la forme d’un décalage par rapport au début du flux.The position is expressed as an offset relative to the beginning of the stream.

Notez que 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.Note that 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. Par exemple, si un fichier est ouvert pour un ajout et que la dernière opération était une lecture, la position de fichier est le point où l’opération de lecture suivante commencerait, pas celui où l’écriture suivante démarrerait.For example, if a file is opened for an append and the last operation was a read, the file position is the point where the next read operation would start, not where the next write would start. (Quand un fichier est ouvert pour un ajout, la position de fichier est déplacée vers la fin du fichier avant toute opération d’écriture.) 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.(When a file is opened for appending, the file position is moved to end of file before any write operation.) If no I/O operation has yet occurred on a file opened for appending, the file position is the beginning of the file.

En mode texte, Ctrl+Z est interprété comme un caractère de fin de fichier en entrée.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 ftell et fseek ou _ftelli64 et _fseeki64, pour se déplacer dans un fichier qui se termine par un Ctrl + Z, peut provoquer un comportement incorrect de ftell ou _ftelli64 vers la fin de la txt.This is done because using the combination of ftell and fseek or _ftelli64 and _fseeki64, to move within a file that ends with a CTRL+Z may cause ftell or _ftelli64 to behave improperly near the end of the file.

Cette fonction verrouille le thread appelant pendant l’exécution et est donc thread-safe.This function locks the calling thread during execution and is therefore thread-safe. Pour une version sans verrouillage, consultez _ftell_nolock.For a non-locking version, see _ftell_nolock.

Configuration requiseRequirements

FonctionFunction En-tête requisRequired header En-têtes facultatifsOptional headers
ftellftell <stdio.h><stdio.h> <errno.h><errno.h>
_ftelli64_ftelli64 <stdio.h><stdio.h> <errno.h><errno.h>

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

ExempleExample

// crt_ftell.c
// This program opens a file named CRT_FTELL.C
// for reading and tries to read 100 characters. It
// then uses ftell to determine the position of the
// file pointer and displays this position.

#include <stdio.h>

FILE *stream;

int main( void )
{
   long position;
   char list[100];
   if( fopen_s( &stream, "crt_ftell.c", "rb" ) == 0 )
   {
      // Move the pointer by reading data:
      fread( list, sizeof( char ), 100, stream );
      // Get position after read:
      position = ftell( stream );
      printf( "Position after trying to read 100 bytes: %ld\n",
              position );
      fclose( stream );
   }
}
Position after trying to read 100 bytes: 100

Voir aussiSee also

E/S de fluxStream I/O
fopen, _wfopenfopen, _wfopen
fgetposfgetpos
fseek, _fseeki64fseek, _fseeki64
_lseek, _lseeki64_lseek, _lseeki64