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 :

Blocage d'une lecture ligne par ligne d'un fichier texte


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Par défaut Blocage d'une lecture ligne par ligne d'un fichier texte
    Bonjour,

    J'ai un petit problème dans la lecture d'un fichier, je lis le fichier ligne par ligne avec fgets chaque ligne est mise dans une structure mais le programme se bloque et je ne comprend pas pourquoi.

    J'affiche les lignes lues et cela correspond à ma structure jusqu'au blocage du programme.

    Merci d'avance pour votre aide.

    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
     
    FILE *fBASE;
    struct BAM *BM;
    char cheminBase[150];
    strcpy(cheminBase,"chemin du fichier txt");
     
    fBASE = fopen(cheminBase,"rt");
    if ( fBASE == NULL)
    {
      printf(" Erreur ouverture Base %s : \n", cheminBase);
    }
    while ( fgets((char *)&BM,sizeof(BM) ,fBASE ) )
    {
          compteur++;
          printf("compteur:%i!\n", compteur);   
          printf("%.*s", sizeof(BM), &BM);
    }
    fclose(fBASE);

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    salut,

    il bloque à quel moment ? (valeur du compteur par rapport au nombre de linges, par ex)

    Pour ta boucle while, regarde de commentaire.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Par défaut
    Bonjour mala92,

    un exemple si mon fichier fait 5000 lignes, le programme se bloque avant la fin de la ligne 4997.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Qu'est-ce que struct BAM pourrais-tu nous montrer où tu le défini?

    Sinon si j'ai bien compris ton programme va se "bloquer" au niveau de la 12 ème ligne de ton programme quand tu lira l'une des dernières ligne de ton fichier?

    Ou est-ce que tu sors de ta boucle quand tu arrive à l'une des dernières ligne de ton fichier ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Par défaut
    Voici la structure:

    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
     
    struct BAM
    {
         char V1         [32];
         char V2         [32];
         char V3         [32]; 
         char V4         [32];
         char V5         [32]; 
         char V6         [ 5];
         char V7         [ 1];  
         char V8         [26];  
         char V9         [1];
         char V10       [1]; 
         char V11       [3];
         char V12       [8];  
         char V13       [1];   
         char V14       [3];
         char V15       [5];  
         char V16       [5];  
         char V17       [5]; 
         char V18       [ 1];  
         char V19       [12];   
         char V20       [20];
         char V21       [ 5];  
         char V22       [32]; 
         char V23       [32]; 
         char V24       [ 1];
         char V25       [132];  
    };
    Dans le cas d'un fichier de 5000 lignes, il va lire 4997 lignes (compteur et affichage de chaque ligne a l'appui) et il se bloque comme si il avait une pause ou qu'il ne trouvait pas la fin de fichier, il ne sort pas du while.

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    J'ai du mal à comprendre l'intérêt d'une telle structure.

    Sinon es-tu sûr que ton fichier soit bien fini d'écrire quand tu essayes de le lire? (que tu ais bien fait le fclose avant de le rouvrir en lecture)
    Est-ce que la ligne qui bloque a quelque chose de particulier que les autres lignes n'ont pas?
    As-tu essayé de mettre cette ligne en premier?

Discussions similaires

  1. Lecture d'une matrice ligne par ligne
    Par bab33 dans le forum Simulink
    Réponses: 8
    Dernier message: 04/08/2014, 10h20
  2. lire une base de donnee ligne par ligne
    Par thildouille dans le forum Langage
    Réponses: 9
    Dernier message: 03/06/2011, 00h50
  3. Réponses: 8
    Dernier message: 18/07/2010, 21h16
  4. Réponses: 12
    Dernier message: 14/05/2008, 17h15
  5. Réponses: 3
    Dernier message: 16/10/2007, 20h45

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