Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1053 connectés 

  FORUM HardWare.fr
  Programmation
  C

  comment connaitre la fin d'un fichier avec des fonctions de bas niveau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment connaitre la fin d'un fichier avec des fonctions de bas niveau

n°2165360
Benh_31
Posté le 24-11-2012 à 20:56:58  profilanswer
 

Bonsoir à tous,
 
je suis en 2ieme année d'IUT informatique et j'ai un exercice sur les fichiers à faire où je dois me servir que de fonctions de bas niveau.
 
J'ai besoin dans mon programme de tester si je me trouve à la fin de mon fichier ou non, mais sans EOF je sais pas comment faire :s
 
avez vous une idée ? merci d'avance.

mood
Publicité
Posté le 24-11-2012 à 20:56:58  profilanswer
 

n°2165366
Farian
Posté le 24-11-2012 à 21:47:46  profilanswer
 

Vous avez plusieurs façons de le faire :  
 
* Soit vous récupérez la taille du fichier avant toute action (fonction stat (Linux) ou _statXXX (Windows)) et vous vous en servez dans votre traitement,
 
* Si vous avez ouvert le fichier avec fopen, allez à la fin avec fseek(fich, 0, SEEK_END), puis ftell vous dit la position, ou, plus simple, vous utilisez la fonction feof :)
 
* Si vous avez ouvert le fichier avec open, à part le fait que le read ne renvoie plus rien (code de retour égal à 0), je ne vois pas ... Si quelqu'un d'autre sait ... :)

n°2165370
Benh_31
Posté le 24-11-2012 à 21:56:31  profilanswer
 

oui :/ j'avais pensé à fseek, je me demandais si "seek" existait mais j'ai cherché sans résultat.
 
pour la première solution je suis pas sur d'avoir le droit de m'en servir.
 
mon fichier ne se termine pas par '\0' par hasard ? vu que c'est un fichier texte..


Message édité par Benh_31 le 24-11-2012 à 21:58:38
n°2165371
Un Program​meur
Posté le 24-11-2012 à 22:02:15  profilanswer
 

Benh_31 a écrit :

Bonsoir à tous,

 

je suis en 2ieme année d'IUT informatique et j'ai un exercice sur les fichiers à faire où je dois me servir que de fonctions de bas niveau.

 

J'ai besoin dans mon programme de tester si je me trouve à la fin de mon fichier ou non, mais sans EOF je sais pas comment faire :s

 

avez vous une idée ? merci d'avance.

 

Si tes "fonctions de bas niveau", c'est l'interface Unix des fichiers (open, read, write, close), la convention Unix est qu'on est à la fin du fichier quand read retourne 0 (autrement dit, ne lit rien mais ne retourne pas d'erreur non plus).

 

En passant, feof ne dit pas si on est a la fin du fichier, elle indique si un flag est mis qui indique que la fin du fichier a été atteinte.  Le moyen correct de s'en servir, c'est de lire jusqu'à avoir une erreur puis tester feof pour savoir si c'est la fin du fichier la cause de l'erreur ou autre chose (problème de formatage ou problème d'IO).


Message édité par Un Programmeur le 24-11-2012 à 22:04:23

---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2165381
Benh_31
Posté le 24-11-2012 à 23:01:39  profilanswer
 

super :) je vais tester ça dessuite

n°2165412
theshockwa​ve
I work at a firm named Koslow
Posté le 25-11-2012 à 17:29:31  profilanswer
 

J'ai toujours eu horreur de cette solution utilisant ftell et on trouve quelques bonnes raisons ici ... Le site en question propose aussi une meilleure méthode pour trouver cette information.

 

Edit : la principale raison pour laquelle je n'aime pas ca est que ftell est censé retourner un long int, et sur un os 32bits, cette solution peut ne pas fonctionner si le fichier fait plus de 2Go ...


Message édité par theshockwave le 25-11-2012 à 17:32:43

---------------
last.fm
n°2165413
Benh_31
Posté le 25-11-2012 à 17:53:17  profilanswer
 

ahah ^^ je me soucie pas trop de ça à mon niveau ^^ c'est que des petits programmes qu'on doit faire :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  comment connaitre la fin d'un fichier avec des fonctions de bas niveau

 

Sujets relatifs
récuperer un caractère dans un fichier avec read[C/Reseau] Connaitre le port Client connecté au port 21 du FTP
Déclenchement Macro à l'ouverture du fichierenvoi direct de fichier postcript a une imprimante reseau sans drivers
Accès fichier sur réseau local netbiosexecuter un JDK avec un fichier .bat
Remplacer une partie de texte par une autre dans un fichier texteUploader un fichier dans tous les dossiers de mon ftp ?
Effectuer un fopen sur un fichier situer sur un nasAppeler fichier SQL
Plus de sujets relatifs à : comment connaitre la fin d'un fichier avec des fonctions de bas niveau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR