Rechercher : dans
Par :

[C] conversion type string -> double

Dernière réponse le 4 mai 2008 à 22:45:38 lostprophet, le 9 oct 2006 à 01:08:32 
 Signaler ce message aux modérateurs

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 ?

Meilleures réponses pour « [C] conversion type string > double » dans :
Langage C - Les types de données Voir Les types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Les templates en C++ VoirIntroduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

cataclypse, le 9 oct 2006 à 09:32:46

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 ;-)

Répondre à cataclypse

2

fadi, le 10 déc 2007 à 15:14:36

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 ;-)

Répondre à fadi

3

dubcek, le 11 déc 2007 à 12:05:00

Ou voir sscanf
int sscanf(const char *str, const char *format, ...);
sscanf reads its input from the character string pointed to by str

Répondre à dubcek

4

Char Snipeur, le 11 déc 2007 à 14:53:03

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
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

5

MRextra, le 27 déc 2007 à 22:22:33

Met le contenu du fichier dans une chaine de caracteres ensuite appel la fonction ATOD (from ASCII TO Double) cherche sur cette voie

Répondre à MRextra

6

 reginfo@cubba.com, le 4 mai 2008 à 22:45:38
  • +1

Salut a tous comment je peu savoir si en caractere est un entier ou pas?

Répondre à reginfo@cubba.com