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 :

lecture de fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut lecture de fichier
    Bonsoir,

    je souhaite compter le nombre d'éléments présents dans un fichier .txt sachant que ce sont tous des chiffres collés les uns aux autres et qu'il peut y avoir plusieurs lignes.
    J'ai utilisé fscanf pour récupérer les valeurs qui m'intéressent mais pour compter, je ne vois pas...

    Merci pour vos indications.

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Tu as un exemple de fichier et un résultat que tu attends parce que c'est plutôt ambigu.

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Si tu appelles élément une ligne alors ton problème revient à compter les lignes c'est-à-dire compter les '\n'. C'est assez trivial, juste une boucle de fgetc avec un compteur de '\n'.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Par défaut
    Citation Envoyé par Melem Voir le message
    Si tu appelles élément une ligne alors ton problème revient à compter les lignes c'est-à-dire compter les '\n'. C'est assez trivial, juste une boucle de fgetc avec un compteur de '\n'.
    c'est à dire que tu va comparer fgetc() avec chaque caractere de ton fichier jusqu'a que tu atteint le caractere '\n' et tu incremente une variable entiere deja initialisée à 0(ton compteur)
    N.B: mais là tu doit faire attention, la derniere ligne de ton fichier doit etre vide pour tomber sur le nombre d'elements exacte,sinon tu aura dans ton compteur le (nombre d'element-1).
    bon courage!!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Par défaut
    Par exemple, dans mon fichier txt j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1002003002222200011111
    12300000032000001
    et je veux savoir combien j'ai de chiffres dans ces lignes de code.
    Il me faut ce nombre et le premier chiffre, ici un "1"

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par rafale001 Voir le message
    Par exemple, dans mon fichier txt j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1002003002222200011111
    12300000032000001
    et je veux savoir combien j'ai de chiffres dans ces lignes de code.
    Il me faut ce nombre et le premier chiffre, ici un "1"
    Dans ce cas tu lis caractère par caractère avec fgetc ton fichier. Tu tiens à jour un compteur et pour chaque caractère lu jusqu'a la fin du fichier(EOF) tu utilises isdigit pour savoir s'il s'agit d'un nombre.

    Poste le code si tu as des problèmes

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par rafale001 Voir le message
    Par exemple, dans mon fichier txt j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1002003002222200011111
    12300000032000001
    et je veux savoir combien j'ai de chiffres dans ces lignes de code.
    Il me faut ce nombre et le premier chiffre, ici un "1"
    Tu lis caractère par caractères avec fgetc() et tu comptes chaque fois que c'est un chiffre. isdigit() peut aider.
    Pour le premier, tu gères un 'flag' d'état que tu réinitialises à chaque ligne (détection d'un '\n').

    C'est un bête problème d'algorithme. Ce qu'il faut, c'est bien décrire le problème à résoudre, puis en décrire le comportement en texte, puis en pseudo-code. Bref, la procédure habituelle :

    1 - définition
    2 - conception
    3 - codage

    Ca donne :

    1 - Définition :

    "je veux savoir combien j'ai de chiffres dans ces lignes de code.
    Il me faut ce nombre et le premier chiffre"

    2 - Conception

    Mettre un compteur à 0.
    Lire le fichier caractères par caractères.
    Si c'est un chiffre, incrémenter le compteur. Si le compteur vaut 1, afficher le chiffre
    Si c'est la fin de ligne, afficher le compteur, remettre le compteur à 0.

    Soit en pseudo-code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    cpt := 0
    FAIRE
     c := INPUT fichier
     SI est_un_chiffre (c)
       INC cpt
       SI cpt = 1
        PRINT c " : " 
       FIN SI
     SINON SI c = EOL
      PRINT cpt EOL
      cpt := 0
     FIN SI
    TANT QUE NON EOF fichier
    Nota : EOL = End Of Line

    3 - Codage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #include <stdio.h>
    #include <ctype.h>
     
    int main (void)
    {
       char const *fname = "test.txt";
       FILE *fp = fopen (fname, "r");
     
       if (fp != NULL)
       {
          int c;
          int count = 0;
          while ((c = fgetc (fp)) != EOF)
          {
             if (isdigit (c))
             {
                count++;
     
                if (count == 1)
                {
                   printf ("%c : ", c);
                }
             }
             else if (c == '\n')
             {
                printf ("%d\n", count);
                count = 0;
             }
          }
          fclose (fp), fp = NULL;
       }
       else
       {
          perror (fname);
       }
       return 0;
    }
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1 : 22
    1 : 17
     
    Press ENTER to continue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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