Bonjour,
J'essai d'écrire un programme qui utilise la librairies Enlightenment Foundation Libraries (EFL)
Donc dans mon cas j'utilise la librairie EINA
et plus particulierrement une fonction de convertion des string en double :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 EAPI Eina_Bool eina_convert_atod (const char *src, int length, long long *m, long *e) Convert a string to a double.
dont voici un exemple d'utilisation :
Issue de la doc offiiel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <stdlib.h> #include <stdio.h> #include <Eina.h> int main(void) { char tmp[128]; long long int m = 0; long int e = 0; double r; if (!eina_init()) { printf ("Error during the initialization of eina.\n"); return EXIT_FAILURE; } eina_convert_dtoa(40.56, tmp); printf("value: %s\n", tmp); eina_convert_atod(tmp, 128, &m, &e); r = ldexp((double)m, e); printf("value: %s\n", tmp); eina_shutdown(); return EXIT_SUCCESS; }
et donc voici mon code ou j'utilise cett fonction, en fais je me suis fait une focnction qui me retourne directement un double :
et le résultat est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #include <stdlib.h> #include <stdio.h> #include <math.h> #include <Eina.h> double convert_string_double (const char *tmp) { long long int m = 0; long int e = 0; double r; //int taille_string = strlen(tmp); if (!eina_init()) { printf ("Error during the initialization of eina.\n"); return EXIT_FAILURE; } printf("value string : %s\n", tmp); //convert string to double if (eina_convert_atod(tmp, 128, &m, &e)) printf("Convertion Sucess \n"); else printf("Convertion Ratée \n"); r = ldexp((double)m, e); printf("value double: %f\n", r); eina_shutdown(); return r; } int main(void) { double r = 0; const char *tmp = "43.5"; r = convert_string_double (tmp); printf("value double = %f\n",r); return 0; }
Donc la convertion est ratée mais jene sais pas pourquoi, je pense peut étre à un probléme de passage entre le char et le char*, qu'en pensez vous svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 value string : 43.5 Convertion Ratée value double: 0.000000 value double = 0.000000
Partager