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 :

Récupérer une valeur dans un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut Récupérer une valeur dans un fichier
    Bonjour, je dois pour un exercice de prog en cours recuperer des valeurs dans un fichier log de type IIS ou Apache.

    J'aimerais savoir comment récupérer les différents champs de la ligne, les stocker dans une structure et passer a la ligne suivante.

    Typiquement un algo donnerai :
    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
    CONCIS tab_concis[];
    cpt=0;
    i, j, k =0;
     
     
    Tant que fichier n'est pas à la fin;
    Lire ligne;
    // Extraction des informations de la ligne et classement dans un tableau
     
    // 1ère info = jour au format yyyy-mm-dd
    jour[] = Extraction du jour dans la ligne;
    mise à l'envers du jour : yyyy-mm-dd devient jj-mm-aaaa
    tab_concis[cpt].jour = jour;
     
    // 2ème info = heure au format hh:mm:ss
    heure = Extraction de l'heure dans la ligne;
    tab_concis[cpt].heure = heure; // on conserve le format du log
     
    // 3ème information = IP du visiteur
    ip = extraction de l'ip;
    tab_concis[cpt].ip = ip;
     
    // 4ème information = méthode d'accès a l'url
    methode = Extraction du premier mot après le " ouvrant;
    tab_concis[cpt].methode = methode;
     
    // 5ème information = url
    url = extraction de url;
    tab_concis[cpt].url = url;
     
    // je vous epargne la suite de l'algo
    // a savoir qu'a la fin du trie des elements de la ligne j'incrémente cpt et je dois passer a la ligne suivante
    S'est qu'un extrait mais ça devrai suffire à me faire comprendre le principe de la "chose"

    Si vous avez de la doc, un tuto, un extrait de code ça m'aiderai beaucoup ...

    Vive le Perl ! ! ! !

  2. #2
    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
    les fonctions fopen, fclose, fgets, sscanf devraient te suffire...



  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Oui, biensure mais comment faire avec ces fonctions pour effectuer la recherche sur la ligne. C'est ça qui me pose problème.

    La ligne est du type :

    217.33.60.213 - - [28/Feb/2002:10:45:24 +0100] "GET /formation/ex_proce_for_1.html HTTP/1.1" 200 657 "www.mirago.fr/scripts/frinfo.asp" "PierreLeRobotMirago"

    ou une autre du type:

    Date IP auth methode URL .....

    Les deux types renvoie à deux format de fichier différents que je dois traité de la même façon ...

    Et parmis ces deux type de lignes vont s'appliquer des filtres différents donc il faut au préalable que je définisse si le fichier et de types un ou deux donc il faut que je donne de l'importance à l'endroit ou je récupère ma variable.

    Du moins dans un premier temps car une fois le type de fichier définis la recupération des valeurs est toujours la même ( même ordre )

    Moi qui n'aime pas le C et qui suis débutant je ne vois pas comment faire cela ...

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Si tu dois récupérer des éléments reconnaissables au sein d'une ligne de texte de n'importe quel format, les expressions régulières sont faites pour toi.

    Mais en C, l'API n'est pas forcément compliquée mais quand même un peu délicate. Ne te décourage pas à la première ligne, car c'est un truc qui te servira toute ta vie. :-)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    J'avais pas penser aux expressions régulières. Ca risque de beaucoup m'aider effectivement Je vais regarder ça. MERCI ! ! ! !

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Et si tu veux le faire en C++ avec boost.regex, regarde ici
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. récupérer une valeur dans un fichier
    Par yoyo-tns dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/07/2012, 10h20
  2. Récupérer une valeur dans un fichier.
    Par Playstate dans le forum Débuter
    Réponses: 3
    Dernier message: 20/11/2011, 13h17
  3. récupérer une valeur dans un fichier
    Par fbb53 dans le forum Shell et commandes GNU
    Réponses: 38
    Dernier message: 19/07/2011, 08h58
  4. Réponses: 0
    Dernier message: 25/02/2008, 14h23
  5. récupérer une valeur dans un fichier .txt ?
    Par _n1n1_ dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/04/2007, 19h19

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