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 d'un fichier formaté


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Lecture d'un fichier formaté
    Bonjour,

    Je viens de voir ce sujet qui correspond d'assez près à ce que j'ai besoin de faire.

    En effet j'ai un fichier sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       9.9550000e-02   2.4733790e-01
       9.9600000e-02   2.3711573e-01
       9.9650000e-02   2.3711582e-01
       9.9700000e-02   2.1086095e-01
       9.9750000e-02  -1.6258655e-01
       9.9800000e-02   1.2618641e-01
       9.9850000e-02  -1.2175136e-01
       9.9900000e-02   1.4739258e-02
       9.9950000e-02  -1.0007738e-01
       1.0000000e-01  -3.2762981e-01
    oui oui, il y a des espaces avant et entre mes valeurs.

    J'ai donc comme 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
    15
     
     if (fichier != NULL)
        {
            while (fgets(chaine, 29, fichier) != NULL) 
            {
                printf("%s\n", chaine);
     
     
    	    fscanf(fichier, "   %d   %d", &score[0], &scorebis[0]);
    	    printf("%d et %d\n", score[0], scorebis[0]);
            }
     
     
            fclose(fichier);
        }
    Mon but final sera d'avoir score rempli de la première colonne dans score et la deuxieme dans scorebis.

    Pouvez vous m'aider, je vois pas trop par ou passer...

    Merci d'avance,
    Theri,

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Tes nombres sont en notation scientifique. Du coup il faut utiliser des nombres à virgule flottante avec le formateur %e (ou %le pour des doubles).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void) {
    	char str[] = "9.9550000e-02 2.4733790e-01";
    	double n1, n2;
     
    	sscanf(str, "%le %le", &n1, &n2);
    	printf("n1 = %le\n"
    		   "n2 = %le", n1, n2);
     
    	return EXIT_SUCCESS;
    }
    Je te laisse l'adapter à ce que tu veux faire
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Expert éminent
    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 : 38
    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
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Pouet_forever Voir le message
    Tes nombres sont en notation scientifique. Du coup il faut utiliser des nombres à virgule flottante avec le formateur %e (ou %le pour des doubles).
    Ou encore %f pour float et %lf pour double. Dans scanf, %...e = %...f. C'est dans printf que c'est pas la même chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(str, "%le %le", &n1, &n2);
    C'est correct, mais on peut aussi supprimer l'espace entre les deux %le, pour la même raison que l'espace est inutile devant le premier.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    et encore mieux %g
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. [IO] : Pb de lecture d'un fichier au format UTF-8.
    Par Foub dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 25/03/2008, 12h33
  2. lecture fichier formaté
    Par [Hugo] dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2007, 07h37
  3. Ifstream > Lecture d'un fichier > Format
    Par Zenol dans le forum SL & STL
    Réponses: 15
    Dernier message: 19/12/2005, 11h04
  4. Lecture simple de fichiers formatés
    Par enicnath dans le forum Général Python
    Réponses: 4
    Dernier message: 10/10/2005, 14h44
  5. lecture simple de fichiers formatés
    Par enicnath dans le forum Langage
    Réponses: 7
    Dernier message: 06/10/2005, 18h06

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