printf("\r" ); fait revenir en début de ligne.
Un petit exemple qui fait ce que vous mentionnez, pour vous illustrer cela.
[il marche sous windows, sous unix, il faut peut être remplacer _sleep() par sleep()]
Code :
- #include <stdlib.h>
- #include <stdio.h>
- int main(int argc, char *argv[])
- {
- int i;
- printf("\n\n" );
- for (i=0;i<=100;i++) {
- printf("Construction de l'arbre des dependances ... %02i%% \r", i);
- _sleep(250);
- }
- _sleep(3000);
- return EXIT_SUCCESS;
- }
|
Note: Il faut faire attention a la taille des lignes, car un \r ne provoque pas l'effacement des caractères de la ligne, comme on peut le voir ici:
Code :
- #include <stdlib.h>
- #include <stdio.h>
- int main(int argc, char *argv[])
- {
- printf("\n\nabcdefghijklmnopqrstuvwxyz" );
- _sleep(1000);
- printf("\r0123456789" );
- _sleep(3000);
- return EXIT_SUCCESS;
- }
|
les caractères klm...xyz restent affichés
Si on remplace le second appel à printf par
printf("\r0123456789 " );
avec 16 blancs finaux, par contre, on aura le résultat recherché.
Une variante du premier exemple
Code :
- #include <stdlib.h>
- #include <stdio.h>
- int main(int argc, char *argv[])
- {
- int i, j, k = 0;
- char spin[4] = {'/', '-', '\\', '|'};
- printf("\n\n" );
- for (i=0;i<100;i++) {
- for (j=0;j<12;j++) {
- printf("Construction de l'arbre des dependances ... %02i%% %c\r", i, spin[k%4]);
- _sleep(35);
- ++k;
- }
- }
- printf("Construction de l'arbre des dependances ... 100%% " );
- _sleep(3000);
- return EXIT_SUCCESS;
- }
|
A+,
Message édité par gilou le 19-04-2010 à 02:54:37
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --