Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/08/2010, à 22:14

T_i_t_i

Actualiser l'affichage dans la console en C, sans faire de clear

Bonsoir à tous smile

J'avais une question à vous poser à propos du langage C :

Quand vous lancez la commande top, l'affichage est actualisé toutes les 3 secondes (par défaut).
Or, quand vous quittez top, le programme ne laisse qu'une seule trace dans le console, alors qu'il a été actualisé plein de fois... Exemple :

bidule@bidule-machine:~$ top
PID USER BLABLA...
13   titi                         //
34   titi                         //
35   root                         // La trace laissée par top
53   titi                         //
23   titi                         //
32   titi                         //
bidule@bidule-machine:~$

Personnellement, dans mes modestes programmes en C, lorsque j'actualise l'affichage, je fait un clear, et je rebalance
tout l'affichage avec ce qui a change par dessus. Mais quand avec la barre latéral je remonte dans ma console, je vois toutes
les traces de tous mes affichages avec printf qui ont étés effaces... Exemple :

bidule@bidule-machine:~$ programmexemple
/* system("clear") */
Variable = 2                                   //   Les traces laissées par le programme
Rentrez une nouvelle valeur : 6                // lorsqu'on remonte dans la console.
/* system("clear") */
Variable = 6                                   //
Rentrez une nouvelle valeur : 3                //
/* system("clear") */
Variable = 3                                   //
Rentrez une nouvelle valeur : 19               //
/* etc etc etc... */                           //
/* system("clear") + Fin du programme */
bidule@bidule-machine:~$

C'est mauvais, mais ça donne l'impression que juste la valeur de la variable est actualisée, alors qu'on rebalance tout
par dessus avec des clear, ce qui est mauvais...

Avez vous une solution, une bibliothèque, une méthode pour actualiser l'affichage de l'écran a un endroit précis...
Sans être obligé d'effacer l'écran et de tout réécrire a l'identique, sauf le caractère qui a changé ?

Ou alors une fonction de la bibliothèque standard (mais ça m'étonnerait de ne pas la connaitre, quand même...)
pour actualiser le caractère avec les coordonnées (2,2) par exemple dans la console, ou réécrire par dessus ?... Parce que les printf on ne peut pas choisir tout ça, c'est a la suite que ça écrit et un point c'est tout...

D'avance merci smile

Dernière modification par T_i_t_i (Le 01/08/2010, à 22:30)


Ubuntu 10.04 / GNOME
(wmii),c'est bien, (uzbl),aussi (merci helly ^^)

Hors ligne

#2 Le 01/08/2010, à 22:41

rniamo

Re : Actualiser l'affichage dans la console en C, sans faire de clear

ncurses


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#3 Le 01/08/2010, à 23:27

Link31

Re : Actualiser l'affichage dans la console en C, sans faire de clear

printf("\033[2J\033[0;0H");

cf. cette page.

Mais il vaut mieux utiliser ncurses si possible, pour rester portable.

Hors ligne

#4 Le 01/08/2010, à 23:47

T_i_t_i

Re : Actualiser l'affichage dans la console en C, sans faire de clear

merci pour vos réponses smile


Ubuntu 10.04 / GNOME
(wmii),c'est bien, (uzbl),aussi (merci helly ^^)

Hors ligne