ftell, _ftelli64
Obtient la position actuelle d'un pointeur de fichier.
long ftell(
FILE *stream
);
__int64 _ftelli64(
FILE *stream
);
Paramètres
- stream
structure cible d' FILE .
Valeur de retour
ftell et _ftelli64 retournent la position actuelle dans le fichier.La valeur retournée par ftell et _ftelli64 peut ne pas refléter le décalage d'octet physique des flux de données ouverts en mode texte, parce que le mode texte provoque l'interprétation de saut de ligne-retour de chariot.Utilisez ftell avec fseekou_ftelli64avec_fseeki64 pour retourner aux emplacements de fichiers correctement.sur l'erreur, ftellet_ftelli64 appellent le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions retournent - 1L et errno a une de deux constantes, défini dans ERRNO.H.La constante d' EBADF signifie que l'argument d' stream n'est pas une valeur valide de pointeur de fichier ou ne fait pas référence à un fichier ouvert.EINVAL signifie qu'un argument non valide d' stream a été passé à la fonction.Sur les appareils incapables de rechercher (tels que les éléments terminaux et les 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 ce point, ainsi que d'autres, les codes de retour.
Notes
Les fonctions d' ftell etd' _ftelli64récupèrent la position actuelle du pointeur de fichier (le cas échéant) associé à stream*.* La position est exprimée comme un offset relatif au début du flux de données.
Notez que lorsqu'un fichier est ouvert pour ajouter des données, la position actuelle dans le fichier est déterminée par la dernière opération d'E/S, pas par l'emplacement où l'écriture suivante se produit.Par exemple, si un fichier est ouvert pour un ajouter et la dernière opération a une lecture, la position de fichier est le point où l'opération suivante de lecture commencerait, pas où l'écriture suivante commencerait.(Lorsqu'un fichier est ouvert pour permettre l'ajout, la position de fichier est déplacée à la fin de le fichier avant toute opération d'écriture.) Si aucune opération d'E/S n'est encore eu lieu sur un fichier ouvert pour permettre l'ajout, la position de fichier est le début du fichier.
En mode texte, CTRL+Z est interprète comme caractère de fin de fichier de l'entrée.Dans les fichiers ouverts pour la lecture/écriture, fopen et le contrôle de routines relatif pour un CTRL+Z à la fin de le fichier et le supprimer si possible.Cette opération est exécutée comme l'utilisation de la combinaison d' ftell et fseek ou _ftelli64 et _fseeki64, pour déplacer dans un fichier qui se termine par un CTRL+Z peut entraîner un comportement ftell ou _ftelli64 incorrectement à la fin de le fichier.
cette fonction verrouille le thread appelant pendant l'exécution et est donc thread-safe.Pour une version non verrouillante, consultez l' _ftell_nolock.
Configuration requise
Fonction |
en-tête requis |
en-têtes facultatifs |
---|---|---|
ftell |
<stdio.h> |
<errno.h> |
_ftelli64 |
<stdio.h> |
<errno.h> |
Pour des informations de compatibilité supplémentaires, 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 : : E/S : : FileStream : : position