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 :

un char dans un float


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut un char dans un float
    bonjour,
    j'ai une chaine de caractère du type (1+2)
    donc le 1 et 2 sont des chars, mais j'ai un problème quand je veux l'afficher en tant que %.3f, comment faire?
    je voudrai le mettre dans un float pour procédé aux calculs

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    La réponse dépend si tu es sûr de n'avoir qu'un seul chiffre à tes entiers ou plusieurs...

    La solution la plus complète serait :

    - Mettre la valeur dans une chaîne de caractère (donc plusieurs chiffres autorisées)

    - Utiliser strtod

    - Faire les calculs

    Jc

  3. #3
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Encore et toujours
    sscanf(buffer, "(%f%*c%f)", &f1, &f2);

    Dans f1 tu aura 1, dans f2 tu aura 2 et apres tu fais tes calculs.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  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 Skyrunner
    Encore et toujours
    sscanf(buffer, "(%f%*c%f)", &f1, &f2);

    Dans f1 tu aura 1, dans f2 tu aura 2 et apres tu fais tes calculs.
    Le coup du "%*c", c'est diabolique ! scanf() est l'oeuvre du Démon...
    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
     
    #include <stdio.h>
     
    int main(void)
    {
       static char const buffer[] = "1+2";
       double f1;
       double f2;
       int n = sscanf(buffer, "(%lf%*c%lf)", &f1, &f2);
     
       printf ("n=%d f1=%.2f f2=%.2f\n", n, f1, f2);
     
     
      return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    n=0 f1=0.00 f2=0.00
     
    Press ENTER to continue.
    Par contre n vaut 0, ce que je trouve assez troublant, vu qu'il y a eu 2 conversions réussies...
    EDIT : en fait, non, ça a foiré.. (d'où le 0)...

    Maudit scanf()...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Hum...

    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
     
    #include <stdio.h>
     
    int main(void)
    {
       static char const buffer[] = "1+2";
       double f1;
       double f2;
       int n = sscanf(buffer, "%lf%*c%lf", &f1, &f2);
     
       printf ("n=%d f1=%.2f f2=%.2f\n", n, f1, f2);
     
     
      return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    n=2 f1=1.00 f2=2.00
    J'ai juste enlever les parentheses dans le sscanf.

    sscanf le cote obscur du C.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  6. #6
    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 Skyrunner
    Hum...
    <...>
    J'ai juste enlever les parentheses dans le sscanf.
    Y'a un démon qui a mis des parenthèses !

    Merci pour l'exorcisme !

    J'ai identifié le démon :
    Citation Envoyé par Skyrunner
    Encore et toujours
    sscanf(buffer, "(%f%*c%f)", &f1, &f2);
    Hé hé, pompier pyromane ?
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    C'est parce que dans son exemple il avait mis (1+2) donc j'ai suppose qu'il avait des parentheses dans sa chaine de caracteres.

    Jedi Sith je dirai plutot.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  8. #8
    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 Skyrunner
    C'est parce que dans son exemple il avait mis (1+2) donc j'ai suppose qu'il avait des parentheses dans sa chaine de caracteres.
    OK, scanf() c'est trop fort pour moi...
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Recopier 4 char dans un float
    Par sylvain-ecvf dans le forum MPLAB
    Réponses: 14
    Dernier message: 28/11/2010, 10h20
  2. Réponses: 19
    Dernier message: 30/05/2006, 18h43
  3. Insertion d'un char dans un char *
    Par bugmenot dans le forum C
    Réponses: 2
    Dernier message: 22/10/2005, 15h17
  4. Changer un char dans une chaine
    Par Calaz dans le forum C
    Réponses: 10
    Dernier message: 07/10/2005, 13h32
  5. [SQL] Convertir un champ INT en CHAR dans un SELECT ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/03/2005, 14h45

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