Effectuer des sorties en couleur, déplacer le curseur etc… avec printf et le pilote ansi.sys [tous compilateurs]

Contenu du snippet

La fonction printf permet beaucoup de chose mais ne permet pas par exemple d’afficher du texte en couleur ou d’effacer l’écran. Mais il existe certainement un pilote nommé ANSI.SYS dans votre ordinateur qui peu permettre d’effectuer de telles manipulations. D’abord, avant de s’en servir il faut l’installer, pour cela, inscrivez la ligne suivante dans le fichier config.sys.
DEVICE=C:\dos\ansi.sys
Voici les différentes possibilités que vous avez avec ce pilote.

Afficher des couleurs :
[30m : lettre noir
[31m : lettre rouge
[32m : lettre verte
[33m : lettre orange
[34m : lettre bleu
[35m: lettre magenta
[36m: lettre cyan
[37m: lettre blanc
[40m: fond noir
[41m: fond rouge
[42m: fond vert
[43m: fond orange
[44m: fond bleu
[45m: fond magenta
[46m: fond cyan
[47m: fond blanc

Positionner le curseur :
[x ;yM : Positionne le curseur au coordonnées x,y
[xA : Déplace le curseur de x lignes vers le haut
[xB : Déplace le curseur de x lignes vers le bas
[xC : Déplace le curseur de x colonnes vers la droite
[xD : Déplace le curseur de x colonnes vers la gauche
[s : Enregistre la position du curseur
[u : Place le curseur à la position enregistrée

Effacer l’écran : [2j

Installer un mode d’affichage :
[0h : 40*25 Monochrome
[1h : 40*25 Couleur (texte)
[2h : 80*25 Monochrome
[3h : 80*25 Couleur (texte)
[4h : 320*200 Couleur (graphique)
[5h : 320*200 4 Couleurs (graphique)
[6h : 640*200 Monochrome
[7h : 640*200 Couleur (texte)
[13h : 320*200 Couleur (graphique)
[14h : 640*200 16 Couleurs (graphique)
[15h : 640*350 Monochrome
[16h : 640*350 16 Couleurs (graphique)
[17h : 640*480 16 Couleurs (graphique)
[19h : 320*200 256 Couleurs (graphique)

Effacer l’écran : [2J

Attention il faut mettre le caractère Esc ou \033 avant tous ces codes.
Voyez le code source pour voir comment cela marche.

Source / Exemple :


#include<stdio.h>
#include<conio.h>

int main()
{
      printf("\033[16h");
      printf("\033[32mBonjour \033[3B"); //Affiche bonjour en vert et saute 3 lignes
      printf("\033[45;32mBonjour");  //Affiche Bonjour en vert sur fond magenta
      getch(); //Attend la saisie d'une touche
      printf("\033[2J"); //Remplie l'écran avec la couleur de fond définie précedemment
      getch();
      return 0;
}

Conclusion :


Le code explique bien le fonctionnement.
Si vous avez gcc sans djgpp vous ne possédez pas conio.h, remplacez alors la fonction getch() par ceci:
int lettre;

if((lettre = getchar()) == 23)
printf("\033[2J");

Si vous avez un problème écrivez moi.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.