IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Acceder a n'importe quel ligne d'un fichier


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Acceder a n'importe quel ligne d'un fichier
    Bonjour a tous, je cherche une fonction capable de lire n'importe quel ligne d'un fichier. En clair si j'ai 10lignes je souhaiterai lire a partir de la ligne 5. J'ai pensé a 'fseek' mais le souci c'est qu'il faut donner une taille en octet et moi dans mon fichier n'est jamais de taille constante! Quelqu'un à une idée???
    Merci

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 572
    Points
    1 572
    Par défaut
    Bonjour,

    on pourrait faire une methode readLine qui lirait une ligne (une suite de caracteres jusqu a le(s) caractere(s) de fin de ligne choisi par l OS) et l appeler au sein d une boucle while par exemple.

    Voir l encapsuler dans une methode dont le prototype pourrait etre :

    char** getLines( int num_debut, unt num_fin )

    qui rend donc un tableau de chaques lignes concernées

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Comme tu l'ecris, le probleme d'un fichier texte est que les lignes sont de taille variable, donc fseek() n'est pas une solution simple. Le plus simple est de lire les lignes une par une (fgets()) jusqu'a ce qu'un compteur indique qu'on en est a la cinquieme ligne. Une autre solution est de lire caractere par caractere en comptant les '\n'.

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par davidporto01 Voir le message
    Bonjour a tous, je cherche une fonction capable de lire n'importe quel ligne d'un fichier. En clair si j'ai 10lignes je souhaiterai lire a partir de la ligne 5. J'ai pensé a 'fseek' mais le souci c'est qu'il faut donner une taille en octet et moi dans mon fichier n'est jamais de taille constante! Quelqu'un à une idée???
    Je rappelle que fgets() est une fonction qui lit les lignes... Suffit de compter...

    Evidemment, il faut que la taille de la chaine qui reçoit la ligne soit correctement dimensionnée...

    Sinon, on peut aussi lire les caractères un à un avec fgetc() et compter les '\n'...

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Je rappelle que fgets() est une fonction qui lit les lignes... Suffit de compter...

    Evidemment, il faut que la taille de la chaine qui reçoit la ligne soit correctement dimensionnée...
    et si on n'en est pas sûr que son dimensionnement soit suffisant, on vérifie la présence du '\n' dans la chaîne et on les compte.

Discussions similaires

  1. Tri par colonne de n'importe quel StringGrid
    Par Dionyzos dans le forum Composants VCL
    Réponses: 3
    Dernier message: 02/07/2008, 16h47
  2. Suppression de n'importe quel ligne
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/07/2007, 12h01
  3. tourner le programme de n'importe quel pc
    Par nad55 dans le forum C
    Réponses: 6
    Dernier message: 11/12/2004, 18h01
  4. Réponses: 5
    Dernier message: 14/01/2004, 20h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo