ftell
|
Défini dans l'en-tête
<stdio.h>
|
||
|
long
ftell
(
FILE
*
stream
)
;
|
||
Retourne 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 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.
En cas d'erreur, la variable errno est définie à une valeur positive définie par l'implémentation.
Notes
Sur Windows,
_ftelli64
peut être utilisé pour travailler avec des fichiers de plus de 2 Gio.
Exemple
Illustre l'utilisation de
ftell()
avec vérification des erreurs. Écrit puis lit quelques valeurs flottantes (FP) depuis/dans un fichier.
#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; }
Sortie possible :
pos: 0 pos: 8 B[0]: 1.1
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 7.21.9.4 La fonction ftell (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.21.9.4 La fonction ftell (p: TBD)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.21.9.4 La fonction ftell (p: 337-338)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.19.9.4 La fonction ftell (p : 303-304)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.9.9.4 La fonction ftell
Voir aussi
|
obtient l'indicateur de position du fichier
(fonction) |
|
|
déplace l'indicateur de position du fichier vers un emplacement spécifique dans un fichier
(fonction) |
|
|
déplace l'indicateur de position du fichier vers un emplacement spécifique dans un fichier
(fonction) |
|
|
Documentation C++
pour
ftell
|
|