mise à jour de la ligne d’écran dans l’application console C (unix)

Je souhaite mettre à jour l’écran de mon application de console C. Je veux faire une barre de progression de la console. Comment puis-je? Regarde ça:

Téléchargement…
| ==== | 34%

à:

Téléchargement…
| ===== | 50%

ceux-ci doivent être sur la même ligne, je dois mettre à jour cette ligne.

Jetez un oeil à cet exemple: http://www.rosshemsley.co.uk/2011/02/creating-a-progress-bar-in-c-or-any-other-console-app/

Le point est:

Nous devons d’abord écrire la séquence d’échappement correcte pour que le terminal sache exécuter les prochains symboles en tant que commande. Dans C, ce code d’échappement est “\ 033 [“. Nous suivons ensuite cette commande par n’importe quelle commande que nous aimons. Dans cet exemple, nous utilisons “\ 033 [F” pour monter une ligne suivie de “\ 033 [J” pour effacer une ligne Cela efface la ligne où se trouvait la barre de charge et positionne le curseur pour que nous puissions réécrire cette même ligne.

 // Process has done i out of n rounds, // and we want a bar of width w and resolution r. static inline void loadBar(int x, int n, int r, int w) { // Only update r times. if ( x % (n/r) != 0 ) return; // Calculuate the ratio of complete-to-incomplete. float ratio = x/(float)n; int c = ratio * w; // Show the percentage complete. printf("%3d%% [", (int)(ratio*100) ); // Show the load bar. for (int x=0; x 

Sur de nombreux systèmes, vous pouvez écraser la ligne. Vous devez juste être sûr de vider la ligne.

  statique const char est égal à [] = "===== .... =====";  // 50 toal = s

 pourcentage de flottement;  // pourcentage ... en supposant que vous ayez besoin de flotter
 int p  // pourcentages entiers

 pour (pourcentage = 0,0; pourcentage <100,0; pourcentage ++)
 {
     p = pourcentage + 0,5;
     fprintf (stdout, "\ r |%. * s |% d", p / 2, est égal à p);
     fflush (stdout);  // assure la ligne écrite, même sans \ n
 }

 p = pourcentage + 0,5;
 printf ("\ r |%. * s |% d \ n", p / 2, est égal à p);  // ligne finale avec \ n

Il est maintenant temps pour le lecteur de se méfier du code non compilé et non testé.

Vous pouvez simplement utiliser les caractères \b pour effacer votre ligne. printf("\b\b\b\b\b\b%5d",value); fflush(stdout) printf("\b\b\b\b\b\b%5d",value); fflush(stdout) . C’est une façon très simple de le faire. Bien sûr, si vous devez faire des choses plus complexes, éditer plusieurs lignes, gérer les coordonnées, vous devriez envisager d’utiliser des malédictions.

 #include  #include int main(void) { int i = 0; for(i = 0; i <= 100; i+= 10) { int j; for(j = 0; j <= i/10; j++) printf("="); printf("%d\n",i); sleep(1); system("clear"); } }