Problème conversion caractère flottant

Signaler
Messages postés
3
Date d'inscription
vendredi 8 janvier 2010
Statut
Membre
Dernière intervention
9 janvier 2010
-
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
-
Bonsoir

J'ai un soucis avec la lecture d'un polynome à partir d'un fichier! J'ai effectué un programme mais je n'obtients pas ce que je voudrais!
en effet je défini les variables:
char c;
float coeff;
Ensuite je fais c=fgetc(f_in);
puis coeff=c;
Si j'affiche c j'obtients bien 3
Si j'affiche coeff j'obtiens 50.000000
Je pense avoir un problème de conversion de type mais je ne vois pas comment faire! :s:s
Si quelqu'un peut me donner une solution svp???

4 réponses

Messages postés
3
Date d'inscription
vendredi 8 janvier 2010
Statut
Membre
Dernière intervention
9 janvier 2010

J'obtiens coeff = 51.000000 et non pas 50.000000 dsl!
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
'3' est à la position 51 dans la table ascii !
Un petit exemple:

#include <stdio.h>

int main(void)
{
  char c = '3'; /* '3' <=> 51 */
  float coeff;

  coeff = c;

  printf("%c %f\n", c, coeff); /* 3 51.000 */
  printf("%i %f\n", c, coeff); /* 51 51.000 */

  return 0;
}


_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
3
Date d'inscription
vendredi 8 janvier 2010
Statut
Membre
Dernière intervention
9 janvier 2010

Merci pour m'avoir répondu!! Je me douté que c'était le code ascii mais maintenant je ne sais pas comment faire pour que la variable coeff prenne bien la valeur 3 et non plus 51.000?
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Tu convertis la variable c en prenant sa valeur véritable.
S'il n'y qu'un et un seul caractère compris entre 0 et 9, alors tu peux faire ceci:

f = c - 48;


Car:
'0' - 48 <=> 48 - 48 <=> 0
'3' - 48 <=> 51 - 48 <=> 3
'9' - 48 <=> 57 - 48 <=> 9

Si tu as de nombres, alors il te faut utiliser atoi.

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]