Comment puis-je effacer la ligne actuellement imprimée dans la console en C ? Je travaille sur un système Linux. Par exemple -
printf("hello");
printf("bye");
Je veux afficher bye sur la même ligne à la place de hello.
Comment puis-je effacer la ligne actuellement imprimée dans la console en C ? Je travaille sur un système Linux. Par exemple -
printf("hello");
printf("bye");
Je veux afficher bye sur la même ligne à la place de hello.
printf("\x1b[1F");
Contrôles de curseur ANSI ici \x1b
est un code d'échappement et [#F
représente - aller au début des lignes # vers le haut.
Je viens de trouver ce vieux fil de discussion, à la recherche d'un genre de séquence d'échappement pour effacer la ligne actuelle.
Il est assez drôle que personne n'ait pensé à l'idée (ou que je l'ai manquée) que printf renvoie le nombre de caractères écrits. Il suffit donc d'imprimer '\r' + autant de caractères vides que printf en a renvoyés et vous effacerez exactement le texte précédemment écrit.
int BlankBytes(int Bytes)
{
char strBlankStr[16];
sprintf(strBlankStr, "\r%%%is\r", Bytes);
printf(strBlankStr,"");
return 0;
}
int main(void)
{
int iBytesWritten;
double lfSomeDouble = 150.0;
iBytesWritten = printf("test text %lf", lfSomeDouble);
BlankBytes(iBytesWritten);
return 0;
}
Comme je ne peux pas utiliser VT100, il semble que je doive me contenter de cette solution
echo -e "bonjour\c" ;sleep 1 ; echo -e "\radieu "
Que fera la commande ci-dessus :
Elle affichera bonjour et le curseur restera sur "o" (en utilisant \c)
Ensuite, elle attendra 1 seconde (sleep 1)
Ensuite, elle remplacera bonjour par adieu. (en utilisant \r)
REMARQUE : En utilisant ";", nous pouvons exécuter plusieurs commandes en une seule fois.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.