ftell : Récupération de la position du curseur


la fonction ftell peut être vraiment utile dans la lecture des fichiers même si le but de cette fonction est assez simple. Elle permet juste de renvoyer la position actuelle du curseur dans le fichier. Imaginons par exemple que vous voulez comptez le nombre de structure écrite dans un fichier. Il suffit de se placer à la fin de ce fichier, récupérer la position du curseur et la diviser par la taille d'une structure pour obtenir ce nombre.

Voyons la déclaration de cette fonction :

  1. long ftell (FILE *stream);   


Comme vous le voyez, cette fonction est assez simple. Il suffit de lui faire passer le pointeur vers le fichier en paramètre et la position est renvoyée comme un nombre de type long. Voyons par exemple ce code :

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3.   
  4. int main()  
  5. {  
  6.     char phrase[256];  
  7.     FILE *fichier = fopen("c:ftell.txt""r");  
  8.   
  9.     printf ("Position courante du cuseur : %ld\n\n", ftell(fichier));  
  10.   
  11.     fgets(phrase, 256, fichier);  
  12.     printf ("Phrase lue : %s\n\n", phrase);  
  13.   
  14.     printf ("Position courante du cuseur : %ld\n", ftell(fichier));  
  15.   
  16.     fclose(fichier);  
  17.   
  18.     return 0;  
  19. }  


ImageImageImage


Pour tester cet exemple, il faut que le fichier ftell.txt existe à la racine du disque dur et contienne quelque ligne de texte. Ce programme va commencer par afficher la position courante du curseur dans le fichier. Etant donné qu'aucune lecture n'a été effectuée, le curseur est toujours au début du fichier, la fonction ftell renvoit donc 0.

Ensuite, nous lisons 256 octets du fichier et nous les affichons. Le résultat sera bien évidemment les 256 premières lettres du texte contenu dans le fichier c:ftell.txt. Enfin, nous réaffichons la valeur renvoyée par la fonction ftell. Nous passons fichier en paramètre et voyons que le résultat affiché est 255. Etant donné qu'avant la lecture il était à la position 0 et que nous avons lu 256 caractères, le curseur est maintenant à la position 0.

0 comments:

Post a Comment