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 d'un fichier composé


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut lecture d'un fichier composé
    Bonjour
    Je suis debutant en C. J'ai un fichier composé de caracteres et de nombres comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DUREE=333
    TRAITEMENTINITIAL=5400
    INFOTYPE=PERIOD
    INFOVAL=30.0
    DEBUGTYPE=NUMBER
    DEBUGVAL=1
    Comment puis-je faire pour recuperer toutes valeurs (a gauche et à droite du signe =) dans des tableaux utilisables par la suite dans mon programme C ?

    J'espere que vous pourrez m'aider
    Merci a vous
    pepito

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    Personne ?
    Mon probleme est si compliqué ? Ah !
    Il va falloir que je revois mon fichier alors ?

    aidez moi, svp !
    Merci

  3. #3
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    bonjour,

    je pense que la solution la plus evidante est de lire le fichier ligne par ligne, et de chercher ton seperateur ( le = ). ainsi tu peut differencie les deux chaine volu
    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
     
     
    typedef struct {
             char Name[SIZE_MAX];
             char Value[SIZE_MAX];
    } TEMP;
     
     
    ....
     
    TEMP Entry[MAX_LINE_NUMBER];
     
    while((line = fgtes(line, MAX_LINE_SIZE, fd))!=NULL) {
               sep = strchr(line, '=');
               strncpy(Entry.Name, line, sep - line);
               strcpy(Entry.Value, sep +1)
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    merci cmoibal

    Voici mon code, avec le code que tu m'as donné :
    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
     
    typedef struct {
      char name[25];
      char values[8];
    } TEMP;
     
    int main(int argc, char *argv[]) 
    {
     
     
     
      TEMP Entry[41];
      FILE *fp=NULL;
      char line[32];
      int val;
      char* sep;
     
     
      fp=fopen("File4C","r");
      if (fp==NULL) {
     
        printf("ERROR, can't open file \n");
        return 1;
     
      } else {
     
        printf("File opened successfully ...\n");
        while (fgets(line,32,fp)!=NULL) {
    	     sep=strchr(line,"=");
                 strncpy(Entry.name,line,sep-line);
    	     strcnpy(Entry.values, sep-1);
    	     printf("%s",Entry.name);
        }
        printf("closing file ....\n");
        fclose(fp);		  
     
        return 0;
      }      
     
    }
    A la compilation, il me met :
    119: attention : passage de l'argument n°2 de « strchr » transforme un pointeur en entier sans transtypage
    120: erreur: requête du membre « name » dans quelque chose n'étant ni une structure ni une union
    LOG4C.c:121: erreur: requête du membre « values » dans quelque chose n'étant ni une structure ni une union

    Y a t il un probleme dans mes declarations ?
    Merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    personne pour me repondre svp ??
    Je suis bloqué là ...
    merci

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    lit les docs et les man pages..

    On ne code pas n'importe comment.....

    Tu utilises strncpy n'importe comment, et tu dois reflechir au probleme des piquets et des intervalles...

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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