Comment fonctionne '\033[J' ?
Bonjour à tous,
Dernièrement, je suis tombé sur ce site https://www.ross.click/2011/02/creat...r-console-app/, et je ne comprend pas comment cette ligne de code peut fonctionner :
Code:
printf("\n\033[F\033[J");
'\033[F' signifie juste placer le curseur au début de la ligne précédente, et '\033[J' efface l'écran du curseur jusqu'à la fin.
Je me suis renseigné du coup, j'ai appris qu'il s'agissait de séquence d'échappement ASCII (ou du VT100). Mais je n'ai pas réussi à trouver pourquoi ça fonctionne. Les listes existantes sur les séquences d'échappements (comme https://www.gnu.org/software/screen/...trol-Sequences) ne donnent pas plus d'explication que ça. Et les quelques forums que j'ai visité ne m'ont pas donné plus d'informations non plus. Puis j'ai réfléchi aussi, mais en général ça donne pas grand chose chez moi.
En fait, si je fait :
Code:
1 2 3 4 5 6 7 8
| 1 #include <stdio.h>
2
3 int main(){
4 printf("azerty");
5 printf("\033[2K");//'\033[2K' c'est effacer la ligne entière
6 sleep(5);
7 return 0;
8 } |
On voit bien que "azerty" n’apparaît pas dans la console, le programme se met en pause 5 secondes, normal.
Par contre si je fais :
Code:
1 2 3 4 5 6 7 8
| 1 #include <stdio.h>
2
3 int main(){
4 printf("azerty");
5 printf("\n\033[F\033[2K");
6 sleep(5);
7 return 0;
8 } |
On voit "azerty" affiché pendant les 5 secondes de pause, alors que pour moi rien ne doit être affiché... ???
J'ai du mal à comprendre l'impact du \n\033[F sur le code, étant donné qu'il s'agit de la seule différence entre les deux codes.
Si quelqu'un avait la gentillesse de bien vouloir m'expliquer ce qui se passe, je lui en serait fortement reconnaissant.
Merci d'avance !!!!