Compartir a través de


ftell, _ftelli64

Obtiene la posición actual de un puntero de archivo.

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

Parámetros

  • stream
    Estructura de FILE de destino.

Valor devuelto

ftell y _ftelli64 devuelven la posición del archivo actual. El valor devuelto por ftell y _ftelli64 puede no reflejar el desplazamiento de bytes físico para las secuencias abierto en modo de texto, porque el modo de texto produce la traducción de retorno- avance de línea de carro. Utilice ftell con fseeko_ftelli64con_fseeki64 para volver a las ubicaciones del archivo correctamente. Por error, ftelly_ftelli64 se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven – 1L y errno determinado a una de dos constantes, definido en ERRNO.H. La constante de EBADF significa que el argumento de stream no es un valor válido del puntero de archivo ni que hace referencia a un archivo abierto. EINVAL significa que un argumento no válido de stream pasado a la función. En los dispositivos incapaces de búsqueda (como terminales y impresoras), o cuando stream no hace referencia a un archivo abierto, el valor devuelto es indefinido.

Vea _doserrno, errno, _sys_errlist y _sys_nerr para obtener más información sobre estos y otros códigos de retorno.

Comentarios

Las funciones de ftell yde _ftelli64recuperan la posición actual del puntero de archivo (si existe) asociado a stream. La posición se expresa como un desplazamiento en relación con el principio de la secuencia.

Observe que si se abre para anexar datos, la posición del archivo actual está determinada por la operación de E/S última, no por donde escribir siguiente aparecería. Por ejemplo, si un archivo se abre para un anexar y la última operación fuera una lectura, la posición del archivo es el punto donde la operación de lectura siguiente comenzaría, no donde escribir siguiente comenzaría. (Si se abre para anexar, la posición del archivo se mueve al final de archivo antes de cualquier operación de escritura). Si ninguna operación de E/S todavía ha producido en un archivo abierto para anexar, la posición del archivo es el principio del archivo.

En modo de texto, CTRL+Z se interpretan como un final de archivo de entrada. En archivos abierto para lectura/escritura, fopen y toda la comprobación para de rutinas relacionada un CTRL+Z al final del archivo y quítelo si es posible. Se hace esto porque utilizar la combinación de ftell y fseek o _ftelli64 y _fseeki64, para desplazarse en un archivo que finaliza con un CTRL+Z puede hacer ftell o _ftelli64 para comportarse incorrectamente cerca del final del archivo.

Esta función bloquea el subproceso de llamada durante la ejecución y por consiguiente seguro para subprocesos. Para consultar una versión que no realiza el bloqueo, vea _ftell_nolock.

Requisitos

Función

Encabezado necesario

Encabezados opcionales

ftell

<stdio.h>

<errno.h>

_ftelli64

<stdio.h>

<errno.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

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

Equivalente en .NET Framework

System::IO::FileStream::Position

Vea también

Referencia

E/S de secuencia

fopen, _wfopen

fgetpos

fseek, _fseeki64

_lseek, _lseeki64