std:: ftell
|
Definido en el encabezado
<cstdio>
|
||
|
long
ftell
(
std::
FILE
*
stream
)
;
|
||
Devuelve el valor actual del indicador de posición de 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 std::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. También establece errno en caso de fallo.
Notas
En Windows,
_ftelli64
puede utilizarse para trabajar con archivos mayores a 2 GiB.
Ejemplo
Demuestra el uso de
std::ftell()
con verificación de errores. Escribe y luego lee algunos valores de punto flotante (FP) desde/hacia un archivo.
#include <cstdio> #include <cstdlib> #include <iostream> // 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; std::perror(func); std::cerr << func << " failed in file " << __FILE__ << " at line # " << line - 1 << '\n'; std::exit(EXIT_FAILURE); } int main() { // Prepare an array of FP values. constexpr int SIZE {5}; double A[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5}; // Write array to a file. const char* fname = "/tmp/test.bin"; FILE* file = std::fopen(fname, "wb"); check(file != NULL, "fopen()", __LINE__); const int write_count = std::fwrite(A, sizeof(double), SIZE, file); check(write_count == SIZE, "fwrite()", __LINE__); std::fclose(file); // Read the FP values into array B. double B[SIZE]; file = std::fopen(fname, "rb"); check(file != NULL, "fopen()", __LINE__); long pos = std::ftell(file); // position indicator at start of file check(pos != -1L, "ftell()", __LINE__); std::cout << "pos: " << pos << '\n'; const int read_count = std::fread(B, sizeof(double), 1, file); // read one FP value check(read_count == 1, "fread()", __LINE__); pos = std::ftell(file); // position indicator after reading one FP value check(pos != -1L, "ftell()", __LINE__); std::cout << "pos: " << pos << '\n'; std::cout << "B[0]: " << B[0] << '\n'; // print one FP value return EXIT_SUCCESS; }
Salida posible:
pos: 0 pos: 8 B[0]: 1.1
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) |
|
|
devuelve el indicador de posición de entrada
(función miembro pública de
std::basic_istream<CharT,Traits>
)
|
|
|
devuelve el indicador de posición de salida
(función miembro pública de
std::basic_ostream<CharT,Traits>
)
|
|
|
Documentación de C
para
ftell
|
|