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 :

Extraction de lignes d'un txt


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut Extraction de lignes d'un txt
    bonjour a tous et merci d'avance pour votre aide

    J'ai un fichier .txt qui me donne des informations sur des entités.Toutes ce informations ne me sont pas utiles et par la suite je souhaite faire des blocs pour créer des liaisons de dépendances entre elles.

    Pour etre plus clair soit l'extrait du txt suivant :

    NOM TOTO
    PRENOM xxxxxx
    SITUATION MARIE
    ENFANT TATA

    Je souhaiterai, dans cette extrait, ne sélectionner que les informations NOM, SITUATION et ENFANT, créer un bloc de cette entité pour, par la suite, faire une liaison avec le bloc de son enfant dont la description sera donné dans le txt à un autre endroit.

    Si je n'ai pas été assez clair, je peux réexpliquer.

    merci.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut


    Et qu'a-tu déjà fait comme code ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Alors pour l'instant peu de code mais beaucoup d'interrogations :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    main()
    {
    char A[] = "NOM";
    FILE*prog;
    prog=fopen("C:\\xxx\\xxx\\xxx\\prog_load_ref.txt","r");
     
                  if (prog != NULL)
                  {
     
                        for (i = 0; i <=300; i++)
                        {
                               Lecture des caractères
                                     Si [caractère = A]
                                       {copier la ligne}
                        }                     
                 fclose(prog);
                 }
       return 0;
    }
     
    }
    En effet, ne sachant pas totalement le nombre de "blocs" a prévoir, je vais devoir faire une fonction malloc pour un nombre x de tableau.Cela est possible?

    Pour la recherche par rapport à une chaine de caractère décidé, j'ai vu beaucoup de post avec la fonction fgets, serait-ce un début de piste?

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour!
    Connais-tu le concept de liste chainée?

    Pourquoi n'as-tu pas écrit une structure (pour matérialiser ton bloc)?

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Leternel bonjour.

    Oui je connait le concept de liste chainée, les arbres généalogique sont fais à partir de cette structure et j'ai déja un programme qui le fait puisque j'en ai réaliser un.C'est pour cela que l'enchainement des blocs ne me fait pas trop peur.

    Pourquoi faire une structure? Je pensais que la structure était un mélange de plusieurs variables, la je ne cherche qu'a prendre des chaine de caractères.

    A moins si je comprends ton point de vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # typedef struct_block
    {
    char*nom
    char*situation
    char*enfant}
    Et à la lecture du fichier txt, faire un test pour remplir la structure?

    Mais comment lire le fichier txt et effectuer ce fameux tests, pour par la suite dégager mes blocs sachant que jen aurais plusieurs?

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par nysay27 Voir le message
    ne sachant pas totalement le nombre de "blocs" a prévoir, je vais devoir faire une fonction malloc pour un nombre x de tableau.Cela est possible?
    c'est là que les listes chainées sont utiles en fait, et assez pertinentes puisqu'il suffit de faire une structure par identité, encore faut-il savoir les implémenter proprement mais c'est bien mieux structuré que d'envisager de jouer avec realloc() par exemple

    Pour la recherche par rapport à une chaine de caractère décidé, j'ai vu beaucoup de post avec la fonction fgets, serait-ce un début de piste?
    oui ben ca va nécéssairement tourner autour de ce genre de fonctions, fgets(), fscanf() sont les pistes à creuser effectivement

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Bonsoir,

    J'ai continué mon code et j'ai toujours quelques soucis:


    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 255
     
    typedef struct _famille
    {
    char*prenom;
    char*nom;
    char*lien;
    struct _famille *pSuivant;
    } famille;
     
    typedef struct
    {
    int Taille;
    famille*Premier;
    famille*Dernier;
    } _List;
     
    int main(void)
    {
    int n=0;
    char ligne[MAX];
    _List * EdtList=(_List*)malloc(sizeof( _List));
    EdtList->Premier=NULL;
    EdtList->Dernier=NULL;
    EdtList->Taille=0;
     
    FILE*batch;
    batch=fopen("C:\\Documents and Settings\\xxx\\Bureau\\famille_load_ref.txt","r");
    //fgets (ligne, sizeof ligne, batch);
    //printf("1: %s\n",ligne);
    while (fgets(ligne,256,famille)!=NULL)
        n++;
    printf("%d lignes lues\n",ligne);
    ParcourirList(EdtList);
    }
     
    void ParcourirList(_List * MaList)
    {
         while(MaList->Premier)
         {
                            printf("prenom/nom %s%s\n",MaList->Premier->identifiant,MaList->Premier->description);
                            printf("lien %s\n",MaList->Premier->lien);
                            MaList->Premier=MaList->Premier->pSuivant;
                            }
         }
    Donc j'ai bien parcouru le fichier txt, maintenant je ne sais pas comment faire le test pour remplir mes structures.Il faudrait faire un test
    avec une chaine de caractère de référence mais cela marche t'il et comment le présenter (sachant que je vais par exemple tester si je trouve le mot "nom" et devoir copier la suite
    qui sera le nom de la personne block).

    exemple de txt:

    nom : dudule prenom : fabien
    age : 25
    lien : pere

    selection de nom, prenom et lien et création d'une structure

    Sachant que dans le fichier txt, la liste doit s'établir sur le lien, ma fonction est-elle bien écrite?

    Sachant qu'il peut ne pas y avoir de lien, est ce que ces structures vont être visibles?

  8. #8
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par nysay27 Voir le message
    exemple de txt:

    nom : dudule prenom : fabien
    age : 25
    lien : pere
    (...)
    Sachant qu'il peut ne pas y avoir de lien
    • dans ton fichier d'exemple on trouve le prenom sur la même ligne que le nom, c'est bien ça/ça peut arriver dans le fichier ?
    • aussi tu dis qu'il peut ne pas y avoir de lien, ton fichier d'exemple en trop court, pour bien faire il faudrait nous montrer un fichier plus réaliste avec plusieurs enregistrements (typiquement, comment on sait qu'on change d'entité, il y a une ligne vide entre chaque, un séparateur quelconque ?)

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

Discussions similaires

  1. Extraction des lignes d'un fichier txt dans un tableau
    Par med.ben235 dans le forum Débuter
    Réponses: 1
    Dernier message: 28/04/2014, 17h56
  2. Comparaison et extraction de ligne de fichier.txt
    Par Gardel dans le forum VBScript
    Réponses: 1
    Dernier message: 08/11/2010, 23h25
  3. requête extraction dernière ligne table
    Par COLOMBAT dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/06/2006, 09h57
  4. Réponses: 52
    Dernier message: 23/05/2006, 11h08
  5. Extraction de ligne identique
    Par sacados1 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/12/2005, 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