C: convertir une chaine en float

Fermé
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 - 9 déc. 2007 à 20:47
 bandito122 - 6 mai 2011 à 21:31
Bonjour,
j'ai une chaine char[6] qui ne contient que des chiffres et un point ex 23.24\0
Je souhaiterais la convertir en float. J'ai essayé des trucs mais le compilateur me dit "cannot convert char into float".
J'utilise DEV C++ et j'ai windows, aidez moi s'il vous plait.
merci

5 réponses

Keff Messages postés 303 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 22 septembre 2009 120
9 déc. 2007 à 20:49
Salut,

Il faut utiliser la fonction atof() pour cela.
nombre = atof(chaine);

@

EDIT : il faut inclure stdlib.h
4
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
9 déc. 2007 à 21:10
voilà :

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct
{
float val;
char nom[45];
} action;
int main()
{
action titre;
float valtitre;
char valeur[10];
char nom[45];
FILE*fichier=NULL;
fichier=fopen("palmares[1].txt","r");
if (fichier!=NULL)
{
printf("============ANALYSE BOURSIERE============\n\n\tnom\tvaleur\n\n");
fseek(fichier,16216,0);
fgets(valeur,6,fichier);
fseek(fichier,15979,0);
fgets(nom,15,fichier);
printf("%s %s\n",nom,valeur);
strcpy(valeur," ");
}
fclose(fichier);
valtitre = atof(valeur);
printf("%f\n",valtitre);
system("pause");
}
3
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
9 déc. 2007 à 21:15
ça ne me met pas de messages d'erreurs mais le float est tout simplement différent de la chaine "valeur".
C'est peut etre du au . et non pas à une virgule non ?
0
Keff Messages postés 303 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 22 septembre 2009 120
9 déc. 2007 à 21:20
Fais plutot comme çà:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct
{
float val;
char nom[45];
} action;
int main()
{
action titre;
float valtitre;
char valeur[10];
char nom[45];
FILE*fichier=NULL;
fichier=fopen("palmares[1].txt","r");
if (fichier!=NULL)
{
printf("============ANALYSE BOURSIERE============\n\n\tnom\tvaleur\n\n");
fseek(fichier,16216,0);
fgets(valeur,6,fichier);
fseek(fichier,15979,0);
fgets(nom,15,fichier); //je te fais confiance pour les adresses!
printf("%s %s\n",nom,valeur);
strcpy(valeur," "); //explique moi l'utilité de cette ligne, tu efface ta chaine avant de la convertir?
fclose(fichier);
valtitre = atof(valeur);
printf("%f\n",valtitre);

}
system("pause");
return(0); //le return est obligatoire si tu declare int main
}
0
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
9 déc. 2007 à 20:54
merci mais ça ne fonctionne hélas pas.
1
Keff Messages postés 303 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 22 septembre 2009 120
9 déc. 2007 à 21:06
Comment ça?

Mets nous le morceau de code que tu utilises, stp.
0
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
9 déc. 2007 à 21:24
l'utilité est nulle en effet lol.
En tout cas merci car désormais tout fonctionne.
Encore merci pour l'aide Kerff!!
Bonne soirée
1
Keff Messages postés 303 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 22 septembre 2009 120
9 déc. 2007 à 21:27
Je t'en prie.

N'oublie pas de passer le topic "en résolu".

@
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
strcpy(vec," ");
sert à mettre un espace aprés ta chaine.

a+
1