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 :

[DEBUTANT] Changer une même ligne sur la console


Sujet :

C++

  1. #1
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut [DEBUTANT] Changer une même ligne sur la console
    bonjour,


    voila je veux faire une petite bar de progression sur la console mais je suis un peu bloqué.

    voici, je veux faire une bare de ce type :

    Progress : .................................... [100%]

    En claire :

    à 0% : Progress : [ 0%]
    à 50% : Progress : ................ [ 50%]
    à 100% : Progress : .................................... [ 100%]

    Plus preciseent je veux effectuer des changement sur une même ligne de la console en cours d'excusion.

    je connais assez bien le c++ , juste le nom de la function me suffit
    AlloSchool, votre école sur internet.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Hé bien tu ne le connais pas aussi bien que ça apparament, cette fonction n'existe pas en C++, pas plus qu'en C d'ailleurs. Certains compilo ou certaines plateformes fournissent des biblios pour ça (conio, ncurse,...) mais ça n'a rien de standard, et je n'en connais pas une seule qui fonctionne pareil sur toutes les platformes.
    Hé oui, ironiquement il est plus dur de faire un programme console portable qu'un programme GUI portable.

  3. #3
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Ce que je fait souvent dans ce cas, c'est utiliser le caractère \r
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    printf("Progress : [ 0%%]\r");
    ...
    printf("Progress : ...............[ 50%%]\r");
    ...
    printf("Progress : ......................[ 100%%]\r");
    Le caractère \r est un retour chariot sans saut de ligne

    Cela marche sur ma console Linux.
    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
    .

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    Citation Envoyé par ram_0000 Voir le message
    Ce que je fait souvent dans ce cas, c'est utiliser le caractère \r
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    printf("Progress : [ 0%%]\r");
    ...
    printf("Progress : ...............[ 50%%]\r");
    ...
    printf("Progress : ......................[ 100%%]\r");
    Le caractère \r est un retour chariot sans saut de ligne

    Cela marche sur ma console Linux.
    Hey, great, je pense que ça peut avoir sa place dans la FAQ C tellement c'est intéressant comme astuce. En tous cas je m'en souviendrai, ça permet d'avoir une sortie raisonnablement parlante du programme, sans pour autant faire défiler les lignes à l'écran.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    merci pour vos reponses

    Hé bien tu ne le connais pas aussi bien que ça apparament, ....

    Merci pour la remarque trés instructif .


    merciii ram_0000, ton idée marche super bien. je suis sous cygwin (couplé avec MinGW) .
    AlloSchool, votre école sur internet.

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    résolu?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Tu peut regarder boost progress
    http://www.boost.org/boost/progress.hpp

  8. #8
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Si cela peut aider quelqu'un, voila comment j'ai fait :


    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
    #define MAXITERATION 1000  // A adapter selon besoin
    #define ITERPERDOT 25 // Le pat de la barre
     
     
    /*
    * Initialisation 
    */
    std::string progress_message;
    // Remplire avec des espaces
    for (i=0;i<nb_dots;++i) progress_message += " ";  
     
    /*
    * Mise à jour de la barre Console :
    */
     
    if( iter % RVM_ITERPERDOT == 0)
    {
          char* dot = "|";
          int percent = 100*iter/MAXITERATION;
          progress_message.replace(iter/RVM_ITERPERDOT,1,1,*dot);
          printf(">> Progress: %s [%d%%]\r",progress_message.c_str(),percent);
     }
    /*
    Resultat : 
     
    >>Progress: ||||||||||||||||||||||                   [52%]
    >>Progress: ||||||||||||||||||||||||||||||           [72%]
     
    */
    Le code n'est bien sur pas utilisable comme il est, il faut l'adapter au cas par cas....

    a++ , et merci encore
    AlloSchool, votre école sur internet.

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

Discussions similaires

  1. Voir tout les onglets sur une même ligne
    Par bnreb10 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/08/2006, 11h08
  2. Décalage sur une même ligne
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/08/2006, 18h24
  3. Commandes shell sur une même ligne
    Par Asdorve dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 13/06/2006, 16h50
  4. Aligner du texte à gauche et à droite sur une même ligne ?
    Par pontus21 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 11h25
  5. 2 éléments sur une même ligne
    Par ben_iap dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 17h27

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