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

5 réponses

  1. 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
  2. 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
    1. 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
    2. 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
  3. jerémiethe7 Messages postés 153 Statut Membre 32
     
    merci mais ça ne fonctionne hélas pas.
    1
    1. Keff Messages postés 327 Statut Membre 120
       
      Comment ça?

      Mets nous le morceau de code que tu utilises, stp.
      0
  4. 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
    1. Keff Messages postés 327 Statut Membre 120
       
      Je t'en prie.

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

      @
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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

    a+
    1