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
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
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
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...Envoyé par Skyrunner
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; }Par contre n vaut 0, ce que je trouve assez troublant, vu qu'il y a eu 2 conversions réussies...
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.
EDIT : en fait, non, ça a foiré.. (d'où le 0)...
Maudit scanf()...
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; }J'ai juste enlever les parentheses dans le sscanf.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 n=2 f1=1.00 f2=2.00
sscanf le cote obscur du C.
Y'a un démon qui a mis des parenthèses !Envoyé par Skyrunner
Merci pour l'exorcisme !
J'ai identifié le démon :
Hé hé, pompier pyromane ?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.
Jedi Sith je dirai plutot.
OK, scanf() c'est trop fort pour moi...Envoyé par Skyrunner
Partager