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

  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...

  7. #7
    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 pour ta reponse mais elle ne m'aide pas trop, c'est sur
    (je suis debutante en C, je n'ai fait que retranscrire ce que cmoibal m'a tres gentiment codé).

    De plus, je suis un peu contrainte par le temps et n'ai pas bp bp de temps pour faire une recherche du man et des histoires de piquets ?! (promis, je m'y plongerai apres mais là, c'est chaud)

  8. #8
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut
    Citation Envoyé par pepito31 Voir le message
    je n'ai fait que retranscrire ce que cmoibal m'a tres gentiment codé
    non, dans le code de cmoibal, il y a un strncpy et un strcpy alors que toi tu mets deux strncpy. cmoibal avait aussi mis des quotes simples autour du signe = alors que toi tu as mis des doubles.


    De plus, tu déclares Entry comme étant un tableau de 41 structures TEMP. il faudrait donc un indice qui varie et qui permet de dire dans quelle entrée du tableau il faut mettre le nom et la valeur lue dans la ligne courante. Ce compteur te permettrait aussi de vérifier que tu ne lis pas plus de 41 lignes dans ton fichier car sinon patatra...

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