std:: ftell
|
Défini dans l'en-tête
<cstdio>
|
||
|
long
ftell
(
std::
FILE
*
stream
)
;
|
||
Retourne la valeur actuelle de l'indicateur de position du fichier pour le flux de fichier
stream
.
Si le flux est ouvert en mode binaire, la valeur obtenue par cette fonction est le nombre d'octets depuis le début du fichier.
Si le flux est ouvert en mode texte, la valeur retournée par cette fonction est non spécifiée et n'a de sens que comme entrée pour std::fseek .
Table des matières |
Paramètres
| stream | - | flux de fichier à examiner |
Valeur de retour
Indicateur de position du fichier en cas de succès ou - 1L en cas d'échec. Définit également errno en cas d'échec.
Notes
Sur Windows,
_ftelli64
peut être utilisé pour travailler avec des fichiers de plus de 2 Gio.
Exemple
Illustre l'utilisation de
std::ftell()
avec vérification des erreurs. Écrit puis lit quelques valeurs à virgule flottante (FP) depuis/dans un fichier.
#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; }
Sortie possible :
pos: 0 pos: 8 B[0]: 1.1
Voir aussi
|
obtient l'indicateur de position du fichier
(fonction) |
|
|
déplace l'indicateur de position du fichier vers un emplacement spécifique
(fonction) |
|
|
déplace l'indicateur de position du fichier vers un emplacement spécifique
(fonction) |
|
|
retourne l'indicateur de position d'entrée
(fonction membre publique de
std::basic_istream<CharT,Traits>
)
|
|
|
retourne l'indicateur de position de sortie
(fonction membre publique de
std::basic_ostream<CharT,Traits>
)
|
|
|
Documentation C
pour
ftell
|
|