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 :

extraire des nombres d'un 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 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Par défaut extraire des nombres d'un fichier
    Bonjour
    j'ai un fichier en .txt de la forme suvante :


    PARAMETERS
    Number: 5
    ppersons: 2.5
    Numberch: 500
    time: 03h00

    DONNEE
    Col Val Num
    Whi 5 150
    RE 10 150
    BL 25 100
    GRE 50 50
    BLA 100 50

    Et j'aimerai obtenir en sorti du programme

    5
    2.5
    500
    03
    00
    5
    150
    10
    150
    25
    100
    50
    50
    100
    50

    J'ai essayé d'utiliser des fonctions comme isdigit, fgetc etc... mais c'est assez lourd.
    Si quelqu'un connait le moyen de les extraire rapidement ^^
    PS il n'y a pas d'espace se sont des \t. et en bout de ligne il ya a des \n
    Merci de votre aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Par défaut
    je crois que la réponse se trouve dans les deux autres discussions du haut de ce forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Par défaut
    je crois que c'est pus compliqué que ce qui est évoqué plus haut. Trouver un chiffre dans un fichier est simple avec une boucle while , isdigit et un fgetc. Mais ici ce ne sont pas des chiffres mais des nombres , il faut donc un test supplémentaire pour vérifier si la caractére précédent ou suivant n'est pas aussi un chiffre.

    L'objet du sujet est de trouver un moyenn simple de la faire^^

  4. #4
    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 Stabia Voir le message
    je crois que la réponse se trouve dans les deux autres discussions du haut de ce forum
    Euh non.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Par défaut
    Ca fonctionne super bien ton truc félicitation , je ne maitrise pas du tout les I/O en C ^^
    Je comprend pas tout mais bon ^^

    Merci c'est cool

  6. #6
    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 ninours23 Voir le message
    je ne maitrise pas du tout les I/O en C ^^
    Je comprend pas tout mais bon ^^
    N'hésite pas à poser des questions. C'est pas trop un problème d'I/O, qui, ici est trivial (fgets(), c'est la base), mais la vrai reflexion est sur l'usage un peu 'avancé' de strtol().

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Par défaut
    je l'ai adapté à mon prog et au lieu de printf je le stock dans une matrice ^^
    En fait je ne connaissais pas strtol() , et je n'aurais jamais l'utiliser comme ca

    et je ne comprend pas ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #if 0
             printf ("'%s'\n", line);
    #endif

  8. #8
    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 ninours23 Voir le message
    j'ai un fichier en .txt de la forme suvante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PARAMETERS
    Number:        5
    ppersons:      2.5
    Numberch:     500
    time:             03h00
     
    DONNEE
    Col        Val     Num
    Whi       5       150
    RE         10     150
    BL         25     100
    GRE       50     50
    BLA       100    50
    Et j'aimerai obtenir en sorti du programme
    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
     
    5
    2.5
    500
    03 
    00
    5
    150
    10
    150
    25
    100
    50
    50
    100
    50
    Il faut lire le fichier ligne par ligne et analyser les lignes avec strtod(). Lire la doc.

    C'est pas tout à fait trivial...
    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
    39
    40
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void)
    {
       char const *fname = "test.txt";
       FILE *fp = fopen (fname, "r");
    
       if (fp != NULL)
       {
          char line[128];
          while (fgets (line, sizeof line, fp) != NULL)
          {
             char *p = line;
    #if 0
             printf ("'%s'\n", line);
    #endif
             while (*p != '\n' && *p != 0)
             {
                char *pend;
                double val = strtod (p, &pend);
    
                if (*p != 0 && pend != p)
                {
                   printf ("%g\n", val);
                }
                p = pend + 1;
             }
          }
          fclose (fp), fp = NULL;
       }
       else
       {
          perror (fname);
       }
       return 0;
    }
    

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Par défaut
    je te remercie, je vais essayé ca^^
    c'est bien ce que je pensais que ce n'était pas trivial ^^

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

Discussions similaires

  1. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 15h09
  2. Comment extraire des infos d'un fichier Word ?
    Par Raoul d'Andrésy dans le forum VBA Word
    Réponses: 4
    Dernier message: 02/12/2005, 17h20
  3. Réponses: 7
    Dernier message: 29/09/2005, 10h19
  4. Extraire des lignes d'un fichier en commande bash
    Par newnew dans le forum Linux
    Réponses: 3
    Dernier message: 27/07/2004, 16h22
  5. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24

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