Téléchargement
illégal
Posez votre question Signaler

[C] conversion type string -> double

lostprophet 7Messages postés 9 octobre 2006Date d'inscription - Dernière réponse le 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 ?
Lire la suite 

[C] conversion type string -> double »

6 réponses
Réponse
+1
moins plus
salut a tous comment je peu savoir si en caractere est un entier ou pas?
Ajouter un commentaire
Réponse
+0
moins plus
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 ;-)
Ajouter un commentaire
Réponse
+0
moins plus
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 ;-)
Ajouter un commentaire
Réponse
+0
moins plus
ou voir sscanf
int sscanf(const char *str, const char *format, ...);
sscanf reads its input from the character string pointed to by str
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
met le contenu du fichier dans une chaine de caracteres ensuite appel la fonction ATOD (from ASCII TO Double) cherche sur cette voie
Ajouter un commentaire
Ce document intitulé « [C] conversion type string -> double » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?