Problème conversion caractère flottant

arcenciel81 Messages postés 3 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 9 janvier 2010 - 8 janv. 2010 à 22:09
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 9 janv. 2010 à 11:42
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

arcenciel81 Messages postés 3 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 9 janvier 2010
8 janv. 2010 à 22:12
J'obtiens coeff = 51.000000 et non pas 50.000000 dsl!
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 janv. 2010 à 23:33
'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]
0
arcenciel81 Messages postés 3 Date d'inscription vendredi 8 janvier 2010 Statut Membre Dernière intervention 9 janvier 2010
9 janv. 2010 à 11:08
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?
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 janv. 2010 à 11:42
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]
0
Rejoignez-nous