[C] conversion type string -> double
lostprophet
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
reginfo@cubba.com Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
reginfo@cubba.com Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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 ?
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:
- [C] conversion type string -> double
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
- Double boot - Guide
6 réponses
Salut,
je pense que tu devrais aller revoir la documentation de scanf... Cette fonction ne renvoie pas que des chaines de caracteres.
par exemple:
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 ;-)
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 ;-)
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 ;-)
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 ;-)
ou voir sscanf
int sscanf(const char *str, const char *format, ...);
sscanf reads its input from the character string pointed to by str
int sscanf(const char *str, const char *format, ...);
sscanf reads its input from the character string pointed to by str
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questiondouble 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