C: convertir une chaine en float
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
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
Configuration: Windows XP Internet Explorer 7.0
5 réponses
-
Salut,
Il faut utiliser la fonction atof() pour cela.
nombre = atof(chaine);
@
EDIT : il faut inclure stdlib.h -
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");
}-
-
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
}
-
-
merci mais ça ne fonctionne hélas pas.
-
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 -
strcpy(vec," ");
sert à mettre un espace aprés ta chaine.
a+