Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/04/2021, à 16:48

jc_buntu

[Résolu] Colorisation de texte en c/c++

Bonjour.
Faute d'avoir pu trouver une solution, qui pourtant doit exister quelque part, je cherche la façon de coloriser des caractères depuis un programme C à destination d'un terminal. Ceux de plus de 40 ans se rappelleront sans doute de "textcolor()" et de son header conio.h, voire de "setcolor()" et des interruptions système !
Pour info, j'utilise CodeBlocks sous Ubuntu 20.04 avec sortie des chaînes de caractères sur le terminal gnome standard.
J'ai naturellement entendu parler de "ncurves" mais installation et utilisation sont assez lourdes ... en tout cas bien trop, à mon goût, pour des fonctionnalités jadis élémentaires.
Ce programme, actuellement fonctionnel, permet la capture de mesures depuis des appareils de labo via le protocole SCPI. Il ne reste qu'à hiérarchiser les données par une colorisation !!! Encore une affaire d'IHM ...

Bref : existe t-il une bibliothèque légère pour coloriser le texte destiné à un terminal ?

Merci

Dernière modification par jc_buntu (Le 22/05/2021, à 19:32)

Hors ligne

#2 Le 27/04/2021, à 16:50

jc_buntu

Re : [Résolu] Colorisation de texte en c/c++

Euhh ... bug ! il s'agit de ncurSes.

Hors ligne

#3 Le 29/04/2021, à 18:57

kamaris

Re : [Résolu] Colorisation de texte en c/c++

Bah je dirais comme cette réponse : https://stackoverflow.com/a/3219471
C'est suffisamment simple pour le faire soi-même, mais ils parlent aussi de ncurses plus bas.

En ligne

#4 Le 29/04/2021, à 19:45

MicP

Re : [Résolu] Colorisation de texte en c/c++

Bonjour

Pour faire s'afficher dans une fenêtre de terminal (qui est capable d'afficher des couleurs)
des phrases, mots, lettres ou chiffres, ou/et certaines valeurs de mesures en couleurs (ou/et gras, clignotant, sur fond de couleur, etc)
utilise les séquences d'échappement ANSI

Voir aussi : stackoverflow : List of ANSI color escape sequences

Tu peux même positionner sur l'écran les valeurs que tu veux afficher,
te faire des fonctions pour tracer des cadres autour des valeurs affichées,
faire clignoter tout le fond d'écran, faire beeper le terminal, etc...

Tout est possible et dépends de ce que tu veux faire…

Dernière modification par MicP (Le 29/04/2021, à 20:00)

Hors ligne

#5 Le 06/05/2021, à 13:37

jc_buntu

Re : [Résolu] Colorisation de texte en c/c++

Merci, Kamaris et MicP. La fiabilité du web "à la campagne" me fait vous répondre tardivement !
J'ignorais que ces séquences fonctionnaient encore au 21eme siècle ; je les avais donc oubliées !
J'essaie en fin de semaine et vous réponds sous peu ...

Hors ligne

#6 Le 12/05/2021, à 15:11

jc_buntu

Re : [Résolu] Colorisation de texte en c/c++

Nickel ! Les bonnes vieilles séquences d'échappement ANSI fonctionnent toujours parfaitement !
Je vais donc éviter de charger un tas de "fourbi" qui pèse lourd dans les programmes et dont la pérennité n'est pas forcément garantie.
J'attends un peu avant de fermer ce topic, au cas où d'autres souhaiteraient en profiter.
Merci beaucoup à tous les deux pour m'avoir rappelé les fondamentaux de la vraie prog : faire les choses simplement !

Hors ligne

#7 Le 13/05/2021, à 00:21

MicP

Re : [Résolu] Colorisation de texte en c/c++

Prévois une option qui permettra une sortie texte sans séquences d'échappement,
au cas où quelqu'un ait besoin de rediriger la sortie de ton programme vers un fichier texte,
ou vers un terminal qui serait incapable d'interpréter ces séquences d'échappement.

Ou alors, plus simplement : Sortie par défaut du programme sans colorisation,
et une option de commande comme par exemple --color

Dernière modification par MicP (Le 13/05/2021, à 06:18)

Hors ligne

#8 Le 22/05/2021, à 19:24

jc_buntu

Re : [Résolu] Colorisation de texte en c/c++

Tu as raison, je vais être prudent et prévoir ce cas, en dur dans le code ou par la transmission d'un argument ( color ?) au lancement du pgm ... ou par lancement via un script qui filtrera le cas.
Encore merci.

Hors ligne