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 :

Problème de lecture fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut Problème de lecture fichier
    Bonjour à tous je viens vers vous avec un petit problème.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #ifndef Fichiergph
    #define Fichiergph
    typedef struct
    {
            char name[50];
            int L; 
            float value[2][10000];
    }Graph;        
    void NameFich(char name[])
     
    {
         printf("Name for create Graph file : \n", name);
         scanf("%s", name);
         strcat(name, ".gf");
    }
     
    void ScriptGraph(Graph datagraph)
    {
         char name[30];
         FILE *s;
         int i, z;
         int n = 0;
     
         NameFich(name);
     
         s = fopen(name, "w");
     
         fwrite(&datagraph.L, sizeof(int), 1, s);
     
         for(z = 0; z < datagraph.L; z++)
         {
               for(i = 0; i<2; i++)
               {     
                     fwrite(&datagraph.value[i][z], sizeof(float), 1, s);
               }
         }
     
     
         for(i = 0; i < datagraph.L/10; i += 1)
         {
            printf("Value %.3f : %.2f\n", datagraph.value[0][i], datagraph.value[1][i]);
         }     
         fclose(s);  
    }
     
    Graph ReadGraph()
    {
         char name[30];
         FILE *e;
         Graph datagraph;
         int i, z;
     
         NameFich(name);
     
         e = fopen(name, "r");
     
         fread(&datagraph.L, sizeof(int), 1, e);
     
         for(z = 0; z < datagraph.L; z++)
         {
               for(i = 0; i<2; i++)
               {                 
                     fread(&datagraph.value[i][z], sizeof(float), 1, e);
               }
         }
     
         fclose(e);
     
         printf("\n\n%d\n\n", datagraph.L);
     
         for(i = 0; i < datagraph.L/10; i += 1)
         {
               printf("Value %.3f : %.2f\n", datagraph.value[0][i], datagraph.value[1][i]);
         }     
     
         return datagraph;
    }     
     
    #endif
    Voila lorsque je crée un fichier grâce à la fonction Scriptgraph tout vas bien.
    Mais lorsque je relis ce même fichier avec readgraph il rentre les valur au fur et à mesure dans le tableau mais à partir de i = 880 (je crois) la fonction rentre uniquement la valeur 0.00 pour toutes les cases de mon tableau datagraph.value[x][y] suivantes.

    Dsl pour le temps que je vous prends.
    Cordialement Aurélien

  2. #2
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Peux tu nous dire quelles sont les valeurs écrites dans ton fichier name.
    Je pense que c'est lorsque tu appelles ta fonction ScriptGraph que tu lui passes une variable datagraph défini sur simplement les 800 premiers caractères non nul.
    Peut tu nous mettre le code de la fonction où tu initialises dataGraph.

    Cordialement,
    Christophe

  3. #3
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    Vu que tu sembles écrire des données binaires dans ton fichier, ouvre le en mode binaire, cela devrait aller mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    s = fopen(name, "wb");
    ...
    e = fopen(name, "rb");

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Merci pour vos réponse rapide.

    En fait le fichier était bien définie au delà puisqu'il recevait les résultats d'une équation sur tous l'intervalle que définit datagraph.L.

    J'ai modifié mon code selon la proposition de Jenna et en effet cela résout le problème.

    Peut-tu juste m'expliquer pourquoi cela a résolu le problème.

    Dans tous les cas merci à vous deux.

  5. #5
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    Citation Envoyé par Aurélien53 Voir le message
    Peut-tu juste m'expliquer pourquoi cela a résolu le problème.
    Avec fopen, tu peux ouvrir le fichier en mode texte ou binaire.

    Le mode texte fait des modifications sur ce qu'il lit et écrit dans le sens où il gère les séquences de caractères CR sans LF ou CR avec LF en ajoutant (ou supprimant) ce qui lui manque. Peut être aussi fait il le même travail avec le caractères BACKSPACE.

    Comme tu écris des données binaires (avec potentiellement des valeurs qui valent CR et/ou LF) en mode texte, la librairie fait son boulot derrière et tu ne le sais pas.

    Le fait de passer en mode binaire (en lecture et en écriture) désactive tout cela.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Oki je te remercie du temps consacré.

    Bonne soirée
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de lecture fichier
    Par Fahmi06 dans le forum Qt
    Réponses: 1
    Dernier message: 29/10/2007, 09h20
  2. Problème de lecture fichier texte
    Par Draconic dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/08/2007, 18h00
  3. Problème STL lecture fichier texte
    Par Bourrine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/04/2007, 11h57
  4. [C#-XML] - Problème de lecture fichier XML
    Par Gloups dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/08/2006, 00h40
  5. problème de lecture fichier
    Par Polo40 dans le forum C
    Réponses: 8
    Dernier message: 30/03/2006, 10h58

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