IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Lecture dans un fichier texte


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Points : 52
    Points
    52
    Par défaut Lecture dans un fichier texte
    Un grand bonjour à tous,

    J'essaie de programmer une petite fonction pour lire un tableau de donnée dans un fichier texte. J'essaie de rester avec des fonctions simples que je maitrise, c'est à dire ne pas utiliser fgets.

    Mon fichier texte est le suivant (très simple) :
    1988.0 4.5 29.5
    1990.1 2.2 30.5

    Dans mon code je rassemble les données dans 3 tableaux de 2 éléments chacun :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    int main(void)
    {
        int i;
        float E1[3],E2[3],E3[3];
     
        FILE* f=NULL;
        f=fopen("test.txt", "r"); //ouverture en lecture
        if (f!=NULL)
        {
            fscanf(f, "%f %f %f %f %f %f", &E1[1],&E2[1],&E3[1],&E1[2],&E2[2],&E3[2]);//on lit le fichier
            fclose(f);  // fermer le flux
        }
            fprintf(stdout,"%f %f %f\n",E1[1],E2[1],E3[1]);
            fprintf(stdout,"%f %f %f\n",E1[2],E2[2],E3[2]);
     
        return 0;
    }
    A l'impression je récupère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1988.000000 4.500000 29.500000
    1990.099976 2.200000 30.500000
    c'est à dire une petite erreur sur le premire chiffre de la deuxième ligne. Je ne suis en fait pas étonnée car je pense qu'il faut une info particulère au code pour lui indiquer qu'il faut changer de ligne.... Mais quoi ?

    Merci,
    L.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    c'est à dire une petite erreur sur le premire chiffre de la deuxième ligne. Je ne suis en fait pas étonnée car je pense qu'il faut une info particulère au code pour lui indiquer qu'il faut changer de ligne.... Mais quoi ?
    Cela n'a rien à voir avec les changements de lignes, mais avec la précision limitée inhérente à la représentation des flottants.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Points : 52
    Points
    52
    Par défaut Réponse a diogene
    Ok en remplacant les float par des double et les %f par des %g ca marche impec.
    Ce qui est bizarre, c'est que lorsque je remplace %g par %e ca met aussi des erreurs (faibles mais elles sont là)

    Sais tu pourquoi ?

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Avec des doubles, la précision est meilleure !

    Tu ne peux pas te baser sur les%.. l'affichage se fait avec un arrondi qui va dépendre du format utilisé.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Points : 52
    Points
    52
    Par défaut Entendu !
    C'est bien noté diogène, merci du coup de main !

Discussions similaires

  1. Lecture dans un fichier texte.
    Par tazthedev dans le forum Delphi
    Réponses: 4
    Dernier message: 31/10/2006, 16h07
  2. Réponses: 4
    Dernier message: 23/03/2006, 17h12
  3. Réponses: 6
    Dernier message: 23/02/2006, 12h09
  4. [ASP] Lecture dans un fichier texte
    Par thoomis dans le forum ASP
    Réponses: 3
    Dernier message: 23/11/2005, 15h08
  5. [Débutant] Lecture dans un fichier texte
    Par babemagus dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/07/2005, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo