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%
- Stockage sécurisé des informations d’identification lorsque je dois récupérer le mot de passe pour l’utiliser
- Indentation du code C, Unix
- la fonction open () dans C commence et ne se termine jamais
- référence indéfinie à mmap et munmap
- Comment lier les fichiers de bibliothèque pour un programme C dans makefile sous UNIX?
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"); } }