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 : 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;
}
Voila desoler si je me suis mal exprimer mais please help

Merci d'avance