Effacer le texte dans une console sous C

Boriss -  
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai assez récemment commencé à apprendre la programmation en C, je créé donc des programmes en console et je voudrais savoir comment effacer le texte écrit pendant l'exécution. J'espère avoir été clair. Merci d'avance.
A voir également:

4 réponses

Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Salut !

Si ton programme reste sous Windows, tu peux utiliser ceci :
system("cls");
Mais toutefois certains protesterons, je ne sais pas pourquoi.

Si tu veux que ton programme aille autre part que sous Windows, j'ai déjà vu un psot qui traitait de cela.

Recherche dans les quelques dernières pages de tout mes posts :
https://forums.commentcamarche.net/forum/s/programmation-3/u/bilow

Bonne recherche :D
[ Désolé, mais je ne me souviens vraiment pas duquel... ]
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Voici le code en C :
#include <windows.h>

void windows_clear_screen(void)
{
    HANDLE hConsole;
    CONSOLE_CONS_BUFFER_INFO Info;
    DWORD NbOctetsEcrits; /* Requis par FillConsoleOutputCharacter */
    COORD Debut = {0, 0};
    
    /* STD_OUTPUT_HANDLE fait reference a la sortie standard du programme qui est par defaut la console */
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    
    /* Lit les infos sur le buffer de l'ecran */
    GetConsoleScreenBufferInfo(hConsole, &Info);
    
    /* Remplit l'ecran avec le caractere espace */
    FillConsoleOutputCharacter(hConsole, ' ', Info.dwSize.X*Info.dwSize.Y, Debut, &NbOctetsEcrits);
    
    /* Remet le curseur au debut de l'ecran */
    SetConsoleCursorPosition(hConsole, Debut);
}

Source : https://c.developpez.com/faq/?page=Gestion-du-clavier-et-de-l-ecran-en-mode-console#CONS_clear_screen

Il vaut mieux passer par les API qu'utiliser la fonction system().

Cdlt,
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
Pourquoi? Le code qui utilise l'API n'est pas plus portable que le code qui utilise la fonction system() , il est juste plus gros, il arrive au même résultat avec ton code.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
A Wazza6
Ça tombe bien, la raison n'est pas la portabilité. C'est une question de performance... La fonction system est très lourde en plus d'être moche et peu sécurisée. Après si vous ne considérez pas ces critères comme important, il n'y a aucun intérêt a développer en C.
0
rosettas
 
Remplacer CONSOLE_CONS_BUFFER_INFO par CONSOLE_SCREEN_BUFFER_INFO (CONSOLE_CONS_BUFFER_INFO n'est pas défini sinon)
0
rob
 
Moi je te conseille de prendre api aussi
0
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
Et si ta console supporte l'ANSI, un simple
puts("\x1b[2J"); suffira.
0

Discussions similaires