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 :

Récuperer un nombre dans une chaine de caractère


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Points : 17
    Points
    17
    Par défaut Récuperer un nombre dans une chaine de caractère
    Bonjour a tous,

    je lis un texte avec fgets et je stocke ça dans un tableau appelé ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (fgets (ligne, sizeof ligne, fp) != NULL){
    Ce texte est de la forme suivante:
    1 sample 1 0.000E+00 2.248E+01

    Je souhaiterais récupérer la valeur 2.248E+01pour la stocker dans un tableau. J'ai donc essayé avec sscanf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(ligne, "\n%*d %*s %*d %*f %f", &tab[i])
    Mais ca ne fonctionne pas, mon tableau ne se remplit pas. Que faire?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Si tes lignes ont toujours le même format, tu pourrais utiliser "strtok" pour découper ta chaîne puis travailler sur les sous-chaînes obtenues en utilisant strod.
    En plus fgets laisse les '\n' à la fin de la chaîne et pas au début.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    En fait je met le \n car j'avais remarqué que ça me résolvait pas mal de problèmes dans l'utilisation de scanf, mais bon c'est empirique, je ne sais pas ce qui se passe réellement.

    En fait je viens de m'apercevoir que si mon tableau est initiaalement rempli de 10, il se retrouve rempli de 10.00002 donc la j'ai un peu de mal a comprendre...

  4. #4
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Utilise '%e' pour scanner ton réel : ca lit les format x.yyyyE+zz


    exemple :
    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>
     
    int main(void){
     
      char *chaine="1 sample 1 0.000E+00 2.248E+01";
      float n;
     
      sscanf(chaine, "%*s%*s%*s%*s%e", &n);
      printf("lu : %e  %f\n", n, n);
     
      return 0;
    }
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    merci beaucoup, avec le %e ça marche nickel
    a+

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

Discussions similaires

  1. Extraire des nombres dans une chaine de caractère
    Par fxfxfx dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/05/2013, 10h41
  2. [CR XI] extraire un nombre dans une chaine de caractère
    Par kikidrome dans le forum Formules
    Réponses: 4
    Dernier message: 01/10/2009, 13h39
  3. Réponses: 2
    Dernier message: 15/07/2009, 09h44
  4. Trouver un nombre dans une chaine de caractère ?
    Par Coussati dans le forum Débuter
    Réponses: 4
    Dernier message: 27/10/2007, 00h35
  5. le nombre d’occurrences dans une chaine de caractére
    Par adilo dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 28/06/2006, 12h24

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