conversion en C
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

conversion en C



  1. #1
    Nabluk

    Question conversion en C


    ------

    Bonjour à tous,

    Je suis en train de programmer un projet en C, et j'ai une petite question.

    J'ai un "fichier.txt" qui contient des nombre décimaux positifs et négatifs (environ 8000) en une seule colonne:

    7
    6,4
    0,45
    -2,1
    ...


    J'aimerais lire ces nombres de manière à effectuer des opérations. Donc ceux-ci doivent être des "float".
    Comment je peux faire ? Tout ce que je connais pour lire c'est "fgets" qui me lit un tableau de caractères jusque "\n".

    Merci.

    -----

  2. #2
    invite66b35789

    Re : conversion en C

    Utilise la fonction atof() qui fait la correspondance entre le code ascii de ta chaine et un float : ATOF

  3. #3
    Nabluk

    Question Re : conversion en C

    salut,

    voila je me suis renseigné sur la fonction atof() et quand je l'utilise dans mon code, elle ne me donne pas ce que je veux :

    FILE* fichier = NULL;

    /*Lecture du fichier.*/
    fichier = fopen("Text.txt", "r");
    /*Ouverture réussie*/
    if (fichier != NULL)
    {
    char nbre[10] = "";
    double n=0;
    fgets(nbre, 10, fichier);
    printf("ESSAI = %s\n", &nbre);
    system("pause");
    n = atof(nbre);
    printf("ESSAI = %f\n", &n);
    system("pause");
    fclose(fichier);
    }
    else /*Ouverture échouée*/
    {
    printf("Impossible d'ouvrir le fichier Text.txt\n");
    system("pause");
    }

    Le premier printf m'affiche bien la lecture, ce qui est normal.
    La deuxième m'affiche un nombre immense.

    le premier nombre de mon fichier est 7,24 (une , pas un . mais si j'inverse ça fait la même chose).

    Merci si quelqu'un peut m'aider.

  4. #4
    Nabluk

    Re : conversion en C

    re,

    je viens de trouver une solution au problème mais je comprends pas pourquoi cela fonctionne.

    printf("ESSAI = %f\n", n);

    J'ai supprimé le "&" au 'n' mais normalement pour afficher la variable je dois mettre son adresse "&n" donc je ne comprends pas pourquoi ?

    Merci

  5. A voir en vidéo sur Futura
  6. #5
    invite66b35789

    Re : conversion en C

    On success, the function returns the converted floating point number as a double value.

    C'est parce que atof() retourne un pointeur

  7. #6
    invite66b35789

    Re : conversion en C

    Oula, en plus de ne pas savoir parler anglais, je dis n'importe quoi
    Tu n'a pas a renseigner l'adresse dans le printf pour un double. C'est nécessaire pour le char* car on ne connait pas sa taille (enfin %s).

  8. #7
    Nabluk

    Re : conversion en C

    Voici mon code actuel :

    double tabT[8000];
    FILE* fichier = NULL;

    /*Lecture du fichier*/
    fichier = fopen("Text.txt", "r");
    /*Ouverture réussie*/
    if (fichier != NULL)
    {
    int i = 0;
    char nbre[5] = "";
    fgets(nbre, 5, fichier);
    tabT[i] = atof(nbre);
    while (fgets(nbre, 5, fichier) != NULL)
    {
    i++;
    fgets(nbre, 5, fichier);
    tabT[i] = atof(nbre);
    }
    fclose(fichier);
    }
    else /*Ouverture échouée*/
    {
    printf("Impossible d'ouvrir le fichier Text.txt\n");
    system("pause");
    }

    Mon problème actuel est qu'il me lis un nombre sur 2 dans mon fichier.

  9. #8
    invite765732342432
    Invité

    Re : conversion en C

    Citation Envoyé par Nabluk Voir le message
    Mon problème actuel est qu'il me lis un nombre sur 2 dans mon fichier.
    Logique, tu fais deux fois appel à fgets:
    while (fgets(nbre, 5, fichier) != NULL)
    {
    i++;
    fgets(nbre, 5, fichier);
    tabT[i] = atof(nbre);
    }

  10. #9
    Nabluk

    Re : conversion en C

    mdrrr

    Oui merci j'ai pas fait attention.

    Merci pour l'aide.

    Sinon peut-on écrire directement des nombres dans un fichier excel ?

  11. #10
    Jack
    Modérateur

    Re : conversion en C

    Dommage que les nombres utilisent des virgules au lieu de points décimaux, car un simple fscanf aurait lu et fait la conversion d'un seul coup.
    Sinon peut-on écrire directement des nombres dans un fichier excel ?
    A mon avis, le plus simple est d'utiliser un fichier csv, donc rester en fichier texte. Les modifs sont donc minimes à partir de ton fichier de départ.

    A+

    PS merci d'utiliser la balise code. C'est plus simple de lire un code bien indenté.

  12. #11
    Nabluk

    Re : conversion en C

    Salut,

    Peut-on m'en dire un peu plus sur les fichiers csv qui sont d'après ce que j'en sais des fichiers avec un format particulier mais je vois pas ce que je peux en faire ou comment les créers.

    Mon but en ramenant les données dans excel est de les traiter de manière à tracer graphiques et autres, peut-on faire la même chose avec des CSV ?

    Merci

  13. #12
    invite765732342432
    Invité

    Re : conversion en C

    Citation Envoyé par Nabluk Voir le message
    Peut-on m'en dire un peu plus sur les fichiers csv qui sont d'après ce que j'en sais des fichiers avec un format particulier mais je vois pas ce que je peux en faire ou comment les créers.
    Pas compliqué:
    http://fr.wikipedia.org/wiki/Comma-separated_values

    Mon but en ramenant les données dans excel est de les traiter de manière à tracer graphiques et autres, peut-on faire la même chose avec des CSV ?
    Excel est capable d'ouvrir les fichiers csv, tu pourras donc faire tous les traitements que tu veux avec.

  14. #13
    Nabluk

    Re : conversion en C

    D'accord je vois mais un fichier .txt est ouvrable aussi par excel vu que je ne travaille qu'avec une colonne de nombres.

    Ma question, pour être plus clair, est : Peut-on écrire directement dans un fichier excel à partir d'un programme en C?

    Merci

  15. #14
    invite765732342432
    Invité

    Re : conversion en C

    Citation Envoyé par Nabluk Voir le message
    Ma question, pour être plus clair, est : Peut-on écrire directement dans un fichier excel à partir d'un programme en C?
    En fait, ce n'est pas plus clair:
    Un fichier .csv, c'est un "fichier excel". Ou plus précisément, c'est un fichier tableur, ouvrable par Excel ou OpenOffice ou ...

    Si tu veux un fichier .xls, alors, oui il est possible d'écrire dedans avec un programme C, à condition d'avoir accès au SDK excel.
    Mais c'est sortir l'artillerie lourde pour pas grand chose...

    Mais si tu nous décrivais un peu mieux ce que tu veux faire, on pourrait peut-être trouver une solution moins lourde et qui te satisferait !

  16. #15
    Nabluk

    Re : conversion en C

    D'accord.

    En gros, je réalise une modélisation.
    Je lis dans un fichier .txt une liste de nombres avec lesquels je réalise un tableau en C avant de m'en servir dans la modélisation.

    En sortie du processus, je récupère un tableau de nombres. Afin de pouvoir discuter sur les résultats, j'ai besoin de mettre en graphique ces données pour une question lisibilité. J'aimerais aussi traiter statistiquement les données par excel.

    Ma première solution (simple) est d'écrire mes résultats dans un fichier .txt. Ensuite l'utilisateur ouvre le fichier excel et lance une macro qui récupère le fichier .txt et en réalise graphes et traitements statistique. Mais j'aurais aimé ne pas avoir cette étape de lancement d'excel par l'utilisateur.

    Merci

  17. #16
    invite765732342432
    Invité

    Re : conversion en C

    Citation Envoyé par Nabluk Voir le message
    Ma première solution (simple) est d'écrire mes résultats dans un fichier .txt. Ensuite l'utilisateur ouvre le fichier excel et lance une macro qui récupère le fichier .txt et en réalise graphes et traitements statistique. Mais j'aurais aimé ne pas avoir cette étape de lancement d'excel par l'utilisateur.
    Intéresse toi alors au SDK Excel, si tu as vraiment envie d'améliorer le processus.
    Ce n'est pas très compliqué, mais j'ai peur que le niveau en C que tu sembles avoir est un peu léger pour faire les choses proprement.

    A tester

  18. #17
    invitec5eb4b89

    Re : conversion en C

    Citation Envoyé par Nabluk Voir le message
    D'accord.

    En gros, je réalise une modélisation.
    Je lis dans un fichier .txt une liste de nombres avec lesquels je réalise un tableau en C avant de m'en servir dans la modélisation.

    En sortie du processus, je récupère un tableau de nombres. Afin de pouvoir discuter sur les résultats, j'ai besoin de mettre en graphique ces données pour une question lisibilité. J'aimerais aussi traiter statistiquement les données par excel.

    Ma première solution (simple) est d'écrire mes résultats dans un fichier .txt. Ensuite l'utilisateur ouvre le fichier excel et lance une macro qui récupère le fichier .txt et en réalise graphes et traitements statistique. Mais j'aurais aimé ne pas avoir cette étape de lancement d'excel par l'utilisateur.

    Merci
    Ouah ! Ce serait pas plus simple de tout faire avec le logiciel R ??

  19. #18
    Nabluk

    Re : conversion en C

    Salut,

    Tu peux m'éclairer sur le logiciel R ?

    Merci

  20. #19
    invitec5eb4b89

    Re : conversion en C

    C'est un logiciel libre qui permet de faire des statistiques :
    http://cran.r-project.org/
    Un nombre assez impressionnant de librairies est disponible (voir l'onglet Task Views). Il permet de lire des données tabulées et d'écrire aussi dans des fichiers tabulés.

    Si besoin, on peut aussi utiliser du code C compilé dans un programme R (mais ca nécessite une certaine maitrise...).

    ps : si tu nous donnes plus de détails sur le traitement statistique que tu veux effectuer sur tes données, on pourra peut être t'aiguiller vers une librairie R.

  21. #20
    lou_ibmix_xi

    Re : conversion en C

    D'autres outils qui me sembleraient plus adaptés qu'EXCEL pour ton besoin:
    -OCTAVE (un clône de MATLAB gratuit et libre),
    -script SHELL (un vrai) avec "bc" ou "octave" pour les opérations et "gplot" pour les graphs

    L'avantage de la dernière solution c'est que tu peux utiliser ton programme en C pour la partie traitement (dans la 1ère aussi mais c'est moins pertinant).

  22. #21
    Nabluk

    Re : conversion en C

    Salut,

    J'avais commencer à coder sur simulink/MatLab mais j'ai changé d'avis afin de créer un exécutable qui sera plus simple maintenant il peut-être possible de le faire également avec Octave ou même MatLab ?!

    Comme j'ai quelques connaissances en C, je me suis dit ce sera plus simple que de se casser la tête. Surtout que mes algorithmes pour ma simulation étaient réalisable facilement en C.

    Il me reste à mettre quelques trucs au point concernant les algorithmes afin que la simulation tourne.

    Mon problème par la suite était d'obtenir quelque chose d'assez visuel en graphique donc j'avais penser à Excel qui est assez connu et relativement facile à utiliser avec des macros pour celui qui utilisera mon programme.

    Pour répondre à la question des statistiques, j'avoue que je n'y ai pas encore réellement réfléchi car je me suis concentré sur la modélisation en premier. Je dirais que vu mes données qui seront des puissances de consommation et autres. Ce sera des statistiques de bases.

    Merci pour les réponses.

Discussions similaires

  1. conversion
    Par invite66fdc997 dans le forum Physique
    Réponses: 2
    Dernier message: 23/08/2009, 12h19
  2. Conversion de base : connaître le nième chiffre sans faire toute la conversion
    Par RVmappeurCS dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 02/07/2009, 19h14
  3. Conversion
    Par invitecea2a245 dans le forum Physique
    Réponses: 6
    Dernier message: 16/06/2009, 13h20
  4. Conversion
    Par invite975d9f0f dans le forum Physique
    Réponses: 8
    Dernier message: 21/05/2006, 11h33
  5. conversion
    Par invite4c1c58fb dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 08/11/2005, 10h40
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...