C: convertir une chaine en float

jerémiethe7 Messages postés 153 Statut Membre -  
 bandito122 -
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 327 Statut Membre 120
 
Salut,

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

@

EDIT : il faut inclure stdlib.h
4
jerémiethe7 Messages postés 153 Statut Membre 32
 
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 153 Statut Membre 32
 
ç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 327 Statut Membre 120
 
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 153 Statut Membre 32
 
merci mais ça ne fonctionne hélas pas.
1
Keff Messages postés 327 Statut Membre 120
 
Comment ça?

Mets nous le morceau de code que tu utilises, stp.
0
jerémiethe7 Messages postés 153 Statut Membre 32
 
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 327 Statut Membre 120
 
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
bandito122
 
strcpy(vec," ");
sert à mettre un espace aprés ta chaine.

a+
1