Bonjour
Mon but est plutot simple , en faite je voudrais coder (ou recoder vu que je ne sais pas si elle existe) une fonction qui recupere un float a partir d'un pointeur qui pointe vers le premier caractere de la chaine mais ce n'est pas un point mais une virgule .
Exemple :
char *p;
p = "57,89";
sortie :
float f = 57.89;
J'ai rajouter des printf("OK"); pour tenter de trouver l'erreur , n'en tenez pas trop compte
Question :
1 - Ca segfault lors de l'apelle de my_getnbr , pourquoi ?
2 - Lorsque je code ca sans la fonction my_getnbr (ca me rajoute des lignes inutiles) la fonction convertofloat se termine pendant le premier while apres avoir convertis correctement la partie entiere (quand p[count] == ',' d'apres moi) , pourquoi ? Comment resoudre le probleme ?
Voila le code (attention ca pique au yeux ^^)
Voila desoler si je me suis mal exprimer mais please help
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
54
55
56
57
58
59
60
61
62
63
64 #include <stdio.h> float converttofloat(char *p); int my_getnbr(char p); int main () { char *pointeur; pointeur = "47,87"; printf("%s\n",pointeur); printf ("%f\n",converttofloat(pointeur)); return 0; } int my_getnbr(char p) { if( (p >= '0') && (p <= '9') ) return ((int)p - 48); else return (-1); } float converttofloat(char *p) { int i=0 ; int f=0 ; int count=0; int countdec=0; float result = 0; printf("OK\n"); /*Recuperation de la partie entiere*/ while((p[count] != ',') || (p[count] != '\0') ) { if(p[count] != ',') { i = my_getnbr(p[count]) ; i *= 10; } count++; } count++; printf("OK\n"); /*Recuperation de la partie decimale*/ while(p[count] != '\0') { if(p[count] != ',') { f = my_getnbr(p[count]) ; f *= 10; } count++; countdec++; } printf("OK\n"); result = f; while(countdec != 0) { result /= 10; countdec--; } result += i; return result; }
Merci d'avance
Partager