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 :

Console n'affiche pas toute les lignes dés le début


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Console n'affiche pas toute les lignes dés le début
    Bonjour,
    Je suis entrain de développer une application console qui affiche le contenu des packets reçu par pcap_loop(), ce qui rend grand le nombre de ligne,
    La console ne permet pas de les afficher tous, elle est initialisé à chaque fois de façon que les lignes affichées juste avant l'affichage des packets disparaissent.
    Que serait la solution car je dois vérifier que mon application récupère tous les packets en vérifiant le contenue avec celui de la capture wireshark
    Merci

  2. #2
    Membre actif Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par maestro_mirou Voir le message
    elle est initialisé à chaque fois de façon que les lignes affichées juste avant l'affichage des packets disparaissent.
    C'est pas clair, tu peux expliquer mieux ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 576
    Points : 1 528
    Points
    1 528
    Par défaut
    Salut,

    Peut être rediriger la sotie standard dans un fichier ? (./mon_programme > toto.txt). Mais un peu plus de précision serait bienvenu.
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Désolé si je n'ai pas pu m'exprimer,
    En d'autre terme je veux vérifier que tous les messages sont récupérés je doit donc récupérer ce que mon application affiche (le contenu de tous les messages) et comparer ceci avec ce qui me sort wireshark
    quand je fait sélectionner tout dans mon application je trouve q'uniquement les 200 derniers messages sont affichés, les autres lignes décrivant les messages sont disparus
    C'est un peu claire maintenant?
    Mais je pense que l'utilisation d'un fichier comme une sortie standard peux régles le problème j'essayerai avec ceci

  5. #5
    Membre actif Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Points : 281
    Points
    281
    Par défaut
    Je comprend mieux. Sous linux (window aussi ?) tu peux envoyer la sortie standard dans un fichier avec ./a.out > log.txt. C'est probablement ta meilleure option.
    Sinon avec un terminal émulé sous linux, (comme gnome-terminal) tu peux régler le nombre de lignes à afficher avant d'effacer les anciennes, quelque part dans les paramètres.
    En tout cas ton problème n'est pas avec le C++, mais avec l'utilisation de ton système.

  6. #6
    Membre régulier Avatar de Jerome S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 62
    Points : 89
    Points
    89
    Par défaut
    Fonctionne également sous windows :
    monprograme > toto.txt
    Dans le monde, il y a 10 types de personnes. Ceux qui comprennent ce message et les autres

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut UP- La console ne m'affiche pas toutes les valeurs (vector-fichier txt paquet très long) )
    Bonjour les gars,

    Je sais que ce post date d'un petit moment, mais je pense avoir le meme soucis que maestro mirou.

    Voila un mystere que je ne comprends pas.
    En fait je lis un fichier texte avec de nombreuse lignes contenant des hexa et de nombreux zéro un peu comme ceci

    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 dd 4d 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 dd 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 dd 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


    J'utilise les vecteurs pour lire le texte ligne par ligne et mettre chaque ligne dans des vecteurs.

    J'effectue une petite opération sur les éléments lu.

    A l'aide d'une boucle for, j'afficher sur la console les valeurs que j'ai lu et modifié

    for (unsigned i=0; i<modif.size(); i++)
    {
    cout<<modif[i]<<endl;
    }


    Quand je debug ligne par ligne ( sur CODE BLOCKS ) le programme m'affiche bien depuis le debut ce que je lui demande mais par contre quand je compile et exécute complètement le programme j'ai l'impression de n'avoir que les quelques dernières valeurs.


    Comment cela ce fait-il ? Est-il possible d'afficher toutes les valeurs ?
    Cela provient t-il du nombre de zero important (j'ai l'impression que je n'ai pas ce soucis avec un fichier contenant beaucoup moins de 00)
    Cela n'a peut etre rien a voir avec les vecteurs et provient uniquement de la console ? Si c'est le cas comment mieux la configurer ?



    Merci d'avance si vous avez une idée.

  8. #8
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 012
    Points : 23 211
    Points
    23 211
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (unsigned i=0; i<modif.size(); ++i)
    i++ va enregistrer la valeur de i, incrémenter i puis retourner la valeur enregistrée, c'est donc plus lent que ++i

    Sinon un terminal n'affichera que les X dernière lignes.
    En effet, il ne peut pas garder toutes les lignes en mémoire sinon au fur et à mesure de son utilisation, il prendra de plus en plus de place jusqu'à ce qu'il plante.

    Remonte tout au haut de ton terminal, est-ce que tu vois quelque chose du genre :
    moi@monOrdi:~/Chemin$ ./monExe
    Si tu veux afficher toutes les lignes, le plus simple est d'afficher au fur et à mesure les lignes en demandant à l'utilisateur s'il veut lire la suite.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    D'accord merci de ta réponse.

    J'ai essayé ++i et j'ai toujours le même résultat. Tout en haut j'ai une liste de 00 qui correspondent au résultat vers la fin du fichier.

  10. #10
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 012
    Points : 23 211
    Points
    23 211
    Par défaut
    Le problème vient donc de ton terminal et non de ton programme.

    Le meiux serait d'afficher par tranche de 10-20 lignes et entre chaque tranche faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cout << appuyez sur une touche pour continuer << endl;
    char c;
    cin >> c;
    Et bien penser à la fin à vider cin.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Désolé je comprends bien l'idée mais je ne vois pas trop comment programmer cela...

  12. #12
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 012
    Points : 23 211
    Points
    23 211
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    afficher(vector<string> &) //on transmet le vecteur de ligne à afficher
    {
              //tant que pas arrivé à la fin
                         for(int i = 0; i < 20 && /* pas arrivé à la fin */ ; ++i)
                          {
                                     //afficher la ligne
                          }
                          //demander à l'utilisateur d'appuyer sur une touche
              //fin tant que
              //vider le flux cin
    }
    Après, tu peux toujours essayer d'optimiser.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci.
    En fait j'ai créé un fichier .txt de sortie a l'aide de ofstream et effectivement j'obtiens bien toutes les valeurs au complet donc le problème vient de l'affichage console.

  14. #14
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Il faut aussi être attentif au type que tu manipules lorsque tu récupères tes données...

    En effet, si tu les récupères sous la forme d'un tableau de (unsigned) char (meme si c'est un std::vector ), il ne faut pas oublier que les caractères ayant une valeur comprise entre '\0' (0 ) et 31 inclus sont des caractères non affichables (dont certains on d'ailleurs des effets symas )

    Il est donc important de veiller à formater la sortie de la console correctement
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [AC-97] Une requête étrange qui n'affiche pas toutes les entrées
    Par ZoliveR dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/11/2010, 11h58
  2. [Débutant] écrire dans excel mais pas toutes les lignes
    Par lauri-anne dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/07/2010, 11h35
  3. [MySQL] Liste déroulante php/sql n'affichant pas toutes les données.
    Par Nicolas_k dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2010, 13h01
  4. Logminer: ne voit pas toutes les lignes
    Par learaph dans le forum Administration
    Réponses: 3
    Dernier message: 06/02/2009, 12h18
  5. BufferedWriter ne ramène pas toutes les lignes
    Par ceriise dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 31/08/2007, 11h55

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