Partager via


ftell, _ftelli64

Obtient la position actuelle d'un pointeur de fichier.

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

Paramètres

  • stream
    Structure cible FILE.

Valeur de retour

ftell et _ftelli64 retournent la position actuelle du fichier. La valeur retournée par ftell et _ftelli64 peut ne pas refléter le décalage d'octets physique pour les flux de données ouverts en mode texte, car le mode texte provoque la traduction des informations transportées pendant les sauts de ligne. Utilisez ftell avec fseekou_ftelli64avec_fseeki64 pour retourner aux emplacements de fichiers correctement. En situation d'erreur, ftellet _ftelli64 appellent le gestionnaire de paramètres invalides, comme décrit dans Validation de paramètre. Si l'execution autorisée de continuer, ces fonctions retournent – 1L et définissent errno comme une des deux constantes, définies dans. ERRNO.H. La constante EBADF signifie que l'argument de stream n'est pas une valeur de pointeur de fichier ou ne fait pas référence à un fichier ouvert. EINVAL signifie qu'un argument invalidevalide stream a été passé à la fonction. Sur des périphériques en mesure de mener des recherchers (tels que les terminaux et des imprimantes), ou lorsque stream ne fait pas référence à un fichier ouvert, la valeur de retour est pas définie.

Consultez _doserrno, errno, _sys_errlist et _sys_nerr pour plus d'informations sur ces éléments et autres codes de retour.

Notes

Les fonctions ftell etd'_ftelli64récupèrent l'emplacement actuel du pointeur de fichier (le cas échéant) associé à stream*.* La position est exprimée comme un décalare relatif par rapport au début du flux.

Notez que lorsqu'un fichier est ouvert pour ajouter des données, la position actuelle du fichier est déterminée par la dernière opération d'E/S, et non par lorsque l'écriture suivante se produirait. Par exemple, si un fichier est ouvert pour un ajout et que la dernière opération est une lecture, la position du fichier correspond au point où l'opération suivante de lecture devait démarer, pas où l'écriture suivante démarre. (Lorsqu'un fichier est ouvert pour un ajout, la position de fichier est déplacée vers fin de fichier avant toute opération d'écriture.) Si aucune opération d'E/S ne s'est produite dans un fichier ouvert pour un ajout, la position de fichier correspond au début du fichier.

Dans le mode text, CTRL+Z est interprété comme un caractère de fin de fichier en entrée. Dans les fichiers ouverts pour lecture/écriture fopenet toutes les autres routines vérifient la présence de Ctrl+Z à la fin du fichier et le supprime si possible. C'est réalisé grâce à une combinaison de ftell et fseek ou_ftelli64 et _fseeki64, pour se déplacer dans un ficuier finissant par CTRL+Z peut engendrer un comportement incorrect deftell ou _ftelli64 vers la fin du fichier.

Cette fonction verrouille les threads appelants pendant l'exécution et est par conséquent thread-safe. Pour une version non verrouillante, consultez _ftell_nolock.

Configuration requise

Fonction

En-tête requis

En-têtes facultatifs

ftell

<stdio.h>

<errno.h>

_ftelli64

<stdio.h>

<errno.h>

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

Exemple

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

Équivalent .NET Framework

System::IO::FileStream::FileStream

Voir aussi

Référence

E/S de flux

fopen, _wfopen

fgetpos

fseek, _fseeki64

_lseek, _lseeki64