tentative conversion string vers float
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 ^^)
Code:
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;
} |
Voila desoler si je me suis mal exprimer mais please help :oops:
Merci d'avance