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 :

fichier texte et Liste Chainée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Par défaut fichier texte et Liste Chainée
    Bonjour à tous,

    je cherche à lire un fichier texte structuré (5 colonnes de nombres entiers).
    Je cherche à mémoriser toutes ces valeurs dans une sorte de matrice.Or comme je ne connais pas le nombre de lignes du fichier texte, je suis parti sur une liste chainée... Voici mon code

    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
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int n) //, char *nomfile[])
    {
    FILE *Out;
    int Nb_Combi=0;
    
    struct Liste {
           int Indice;
           int Combi[5];
           int N4;
           int N3;
           int N2;
           int N1;
           
           struct Liste * psuiv;
           };
           
    struct Liste *pNouveau;
    struct Liste *pTete;
    struct Liste *pCourant;
    
    pTete = NULL;
    pNouveau = NULL;
    pCourant = NULL;
    
    Out=fopen("resultats_num_treated.txt", "rb");
    
    // Premier maillon = Premiere Ligne
    Nb_Combi=1;
    pNouveau = malloc(sizeof(struct Liste));
    pTete = pNouveau;
    pCourant = pTete;
    pCourant->psuiv = NULL;
    pCourant->Indice = Nb_Combi;
    pCourant->N4=0;
    pCourant->N3=0;
    pCourant->N2=0;
    pCourant->N1=0;
    
    fscanf(Out, " %d %d %d %d %d\n ", pCourant->Combi[1], pCourant->Combi[2], pCourant->Combi[3], pCourant->Combi[4], pCourant->Combi[5]);
    ////////////////////////////////////
    
    while (!feof(Out))) {
    
    Nb_Combi = Nb_Combi+1;
    
    pNouveau = malloc(sizeof(struct Liste));
    pCourant->psuiv = pNouveau;
    pCourant = pNouveau;
    pCourant->psuiv = NULL;
    pCourant->Indice = Nb_Combi;
    pCourant->N4=0;
    pCourant->N3=0;
    pCourant->N2=0;
    pCourant->N1=0;
    fscanf(Out, " %d %d %d %d %d\n ", pCourant->Combi[1], pCourant->Combi[2], pCourant->Combi[3], pCourant->Combi[4], pCourant->Combi[5]);
    
    }
    
     fclose(Out);
    J'ai un problème sur les fscanf...

    LE reste semble t il correct?

    Merci de votre aide,

    Alex

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    salut

    je n'ai jamais aussez utiliser fscanf, mais j'ai l'impression que tu as oublié le "&" devant les paramètre : pCourant->Combi[1] n'est pas une adresse.

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


    M'enfin, où avez-vous appris le C ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (!feof(Out))) {

    feof ne fait pas ce que tu crois .....

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Par défaut
    effectivement, j'avais mis le & avant, mais le même problème...

    Apparemment, c'est le -> qui pose pb...

    Alex

  5. #5
    Invité de passage
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(Out, " %d %d %d %d %d\n ", pCourant->Combi[1], pCourant->Combi[2], pCourant->Combi[3], pCourant->Combi[4], pCourant->Combi[5]);
    Bonjour
    Je crois que le problem est dans ton fscanf : parceque Combi[5] n'exite pas ( le 1ie indince d'un tableau est toujours 0 , pas 1 comme ce que tu as fait)

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Par défaut
    M'enfin, où avez-vous appris le C ???
    les bases il y a une petite dizaine d'année à mon école d'ingé...
    Depuis très peu pratiqué en info. Beaucoup en elec pour la programmation de micro contrôleur... Et oui, je suis électronicien... Mais ce n'est pas la même chose...

    Malheureusement, pour un certain niveau de technicité, il faut faire ses outils soit même...

    En tout cas merci de ton encouragement...

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Par défaut
    je viens de regarder pour feof...

    Voila ce que j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int c;
    file *in;
    while ((c=fgetc(in))!=EOF) {
    }
    j'ai testé. La boucle s'arrête à condition que c soit un int. A l'intérieur de ma boucle, je teste le caractère et le recopie dans un deuxième fichier si il correspond à ce que je cherche...
    Mais avec un int pour c, la recopie ne marche pas...
    J'ai essayé de caster... Pareil...

    Alex

Discussions similaires

  1. convertir fichier texte en liste de données
    Par rc_64500 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/12/2012, 14h05
  2. Fichier texte et liste déroulante
    Par pat100 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/11/2012, 14h24
  3. Réponses: 0
    Dernier message: 09/11/2010, 09h56
  4. fichier texte : comparer deux chaines accentuées
    Par rvfranck dans le forum Langage
    Réponses: 4
    Dernier message: 30/10/2008, 13h27
  5. Tranformer un fichier texte en liste
    Par paskal64 dans le forum Général Python
    Réponses: 2
    Dernier message: 07/09/2008, 21h18

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