[C] conversion type string -> double
lostprophet
Messages postés
7
Statut
Membre
-
reginfo@cubba.com Messages postés 2 Statut Membre -
reginfo@cubba.com Messages postés 2 Statut Membre -
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