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
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

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

    @

    EDIT : il faut inclure stdlib.h
    1. 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");
      }
      1. ç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 ?
      2. 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
        }
    2. merci mais ça ne fonctionne hélas pas.
      1. Comment ça?

        Mets nous le morceau de code que tu utilises, stp.
    3. 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. Je t'en prie.

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

        @
    4. strcpy(vec," ");
      sert à mettre un espace aprés ta chaine.

      a+