[C] conversion type string -> double

Fermé
lostprophet Messages postés 7 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 9 janvier 2007 - 9 oct. 2006 à 01:08
reginfo@cubba.com Messages postés 2 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 5 mai 2008 - 4 mai 2008 à 22:45
Bonjour,

je suis en train de programmer en langage C une fonction qui permet de lir un fichier .txt dont les lignes ressemblent a ca

1 3.058664433E-019 1.294707223E-003 -7.475013088E-004
2 3.00 ... . . . . . . ..............................................................

donc j'arrive bien a recuperer le 1 dans un tableau, le 3.058664433E-019, etc... mais comme j'utilise la fonction scanf, il s'agit de chaines de caractere et je n' arrive pas a convertir le 3.058664433E-019 en double...

meme avec la fonction atoi ca ne fonctionne pas ...

quelqu'un a une idee ?
A voir également:

6 réponses

reginfo@cubba.com Messages postés 2 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 5 mai 2008 1
4 mai 2008 à 22:45
salut a tous comment je peu savoir si en caractere est un entier ou pas?
1
Salut,

je pense que tu devrais aller revoir la documentation de scanf... Cette fonction ne renvoie pas que des chaines de caracteres.

par exemple:

int x;
scanf(" %d", &x);


permet de lire x sur l'entrée standard et de l'interpréter comme un entier.

Je te laisse retrouver comment on fait si x est un double ;-)
0
je pense que tu devrais aller revoir la documentation de scanf... Cette fonction ne renvoie pas que des chaines de caracteres.

par exemple:


int x;
scanf(" %d", &x);


permet de lire x sur l'entrée standard et de l'interpréter comme un entier.

Je te laisse retrouver comment on fait si x est un double ;-)
0
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 5 628
11 déc. 2007 à 12:05
ou voir sscanf
int sscanf(const char *str, const char *format, ...);
sscanf reads its input from the character string pointed to by str
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 déc. 2007 à 14:53
double num2str(char *c)//capable de lire toute les valeurs !
       {
       int i=0,v=1,j=1;
       int signe=1;
       if (c[0]=='-') 
              {
              signe=-1;
              i++;
              }
       if ((47>=c[i])|(c[i]>=58)) return log(v-2);// cas de gourance ou le premier caractère n'est pas un chiffre
       double val=(c[i]-48);
       i++;
       while((47<c[i])&(c[i]<58)|c[i]=='.'|c[i]=='e')
           {
           if (c[i]=='e')
                      {
                      char *f=new char;
                      for (int j=0;j<6;j++)
                      f[j]=c[i+j+1];
                      return signe*val*pow(10,num2str(f));
                      }
           if ((c[i]!='.')&v)
              {
              val*=10;
              val+=(c[i]-48);
              i++;
              }
           else
            if (c[i]!='.')
               {
               val+=(c[i]-48)/pow(double(10),double(j));
               i++;
               j++;
               }
            else
               {i++;v=0;}
           }
       return signe*val;
       }
tu peux remplacer le 'e' par 'E' pour ton problème
0
MRextra Messages postés 153 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 23 février 2009 35
27 déc. 2007 à 22:22
met le contenu du fichier dans une chaine de caracteres ensuite appel la fonction ATOD (from ASCII TO Double) cherche sur cette voie
0