Couleur c [Résolu]

Signaler
-
 paul -
Bonjour, je voudrait savoir si il est possible de ne changer la couleur d'un seuls mot plustot que de tout le texte ,en c ou alors c++,
merci.



Configuration: Windows / Chrome 86.0.4240.198

2 réponses

Messages postés
5455
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
9 janvier 2021
920
Salut paul,

Pas en C standard.

Selon le système que tu utilises et le type de console, tu peux le faire avec différents moyens correspondants.

Sous Windows, pour la console cmd, cela peut se faire avec SetConsoleTextAttribute()

https://docs.microsoft.com/en-us/windows/console/setconsoletextattribute

Sinon, depuis quelques années, Microsoft a introduit dans son API une couche de compatibilité de son terminal avec les séquences d'échappement VT100 du monde Unix.

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

Si tu es sur un système Windows récent, tu peux faire ceci :

#include <stdio.h>
#include <windows.h>

#define RED_COL "\x1b[31m"  /* ANSI rouge */
#define END_COL "\x1b[0m"   /* réinitialiser */

int main(void) {
    /* paramétrage de la console CMD pour supporter les séquences 
     * d'échappement VT100 */
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hOut == INVALID_HANDLE_VALUE) {
        return GetLastError();
    }

    DWORD dwMode = 0;
    if (!GetConsoleMode(hOut, &dwMode)) {
        return GetLastError();
    }

    dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
    if (!SetConsoleMode(hOut, dwMode)) {
        return GetLastError();
    }
    
    /* ensuite on peut faire cela */
    printf("Ceci est un texte en couleur normale, avec un mot en " 
            RED_COL "rouge" END_COL ". Et hop.\n");
    return 0;
}


Si tu es sous Linux, tu retires le
#include <windows.h>
et les lignes 8 à 25 et tu fais la même chose.

C'est toujours pas du C standard, mais au moins tu utilises des séquences d'échappement connues sous les systèmes POSIX (après un paramétrage de la console Windows).

Dal
super , merci beaucoup, c est exactement ce que je voulais !!