ftell
|
Definido en el encabezado
<stdio.h>
|
||
|
long
ftell
(
FILE
*
stream
)
;
|
||
Devuelve el indicador de posición del archivo para el flujo de archivo stream .
Si el flujo está abierto en modo binario, el valor obtenido por esta función es el número de bytes desde el inicio del archivo.
Si el flujo está abierto en modo texto, el valor devuelto por esta función no está especificado y solo es significativo como entrada para fseek() .
Contenidos |
Parámetros
| stream | - | flujo de archivo a examinar |
Valor de retorno
Indicador de posición de archivo en caso de éxito o - 1L si ocurre un fallo.
En caso de error, la variable errno se establece a un valor positivo definido por la implementación.
Notas
En Windows,
_ftelli64
puede utilizarse para trabajar con archivos mayores a 2 GiB.
Ejemplo
Demuestra
ftell()
con verificación de errores. Escribe y luego lee algunos valores de punto flotante (FP) desde/hacia un archivo.
#include <stdio.h> #include <stdlib.h> /* If the condition is not met then exit the program with error message. */ void check(_Bool condition, const char* func, int line) { if (condition) return; perror(func); fprintf(stderr, "%s failed in file %s at line # %d\n", func, __FILE__, line - 1); exit(EXIT_FAILURE); } int main(void) { /* Prepare an array of FP values. */ #define SIZE 5 double A[SIZE] = {1.1, 2.0, 3.0, 4.0, 5.0}; /* Write array to a file. */ const char* fname = "/tmp/test.bin"; FILE* file = fopen(fname, "wb"); check(file != NULL, "fopen()", __LINE__); const int write_count = fwrite(A, sizeof(double), SIZE, file); check(write_count == SIZE, "fwrite()", __LINE__); fclose(file); /* Read the FP values into array B. */ double B[SIZE]; file = fopen(fname, "rb"); check(file != NULL, "fopen()", __LINE__); long int pos = ftell(file); /* position indicator at start of file */ check(pos != -1L, "ftell()", __LINE__); printf("pos: %ld\n", pos); const int read_count = fread(B, sizeof(double), 1, file); /* read one FP value */ check(read_count == 1, "fread()", __LINE__); pos = ftell(file); /* position indicator after reading one FP value */ check(pos != -1L, "ftell()", __LINE__); printf("pos: %ld\n", pos); printf("B[0]: %.1f\n", B[0]); /* print one FP value */ return EXIT_SUCCESS; }
Salida posible:
pos: 0 pos: 8 B[0]: 1.1
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.21.9.4 La función ftell (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.21.9.4 La función ftell (p: TBD)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.21.9.4 La función ftell (p: 337-338)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.19.9.4 La función ftell (p: 303-304)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.9.9.4 La función ftell
Véase también
|
obtiene el indicador de posición del archivo
(función) |
|
|
mueve el indicador de posición del archivo a una ubicación específica en un archivo
(función) |
|
|
mueve el indicador de posición del archivo a una ubicación específica en un archivo
(función) |
|
|
Documentación de C++
para
ftell
|
|