{{tag>dev c ncurses}}
====== ncurses ======
ncurses pour **n**ew **curses** et curses pour **cursor optimization**. C'est une bibliothèque de fonctions C permettant une gestion avancée des entrées/sorties sur un terminal en ligne de commandes (CLI). ncurses se charge de détecter les capacités du terminal et envoi les caractères de contrôles adaptés.
ncurses est sous licence GNU, c'est une version libre de CURSES qui a vu le jour sur BSD System V (SVr4)
===== Compilation =====
Installer les fichiers sources:
$ apt-get install libncurses5-dev
Inclure le fichier d'entête **ncurses.h** dans les sources et compiler en spécifiant la bibliothèque ncurses:
#include
...
$ gcc main.c -lncurses
===== output =====
3 classes de fonctions pour les sorties:
* addch() pour afficher un caractère en spécifiant sa mise en forme (attributs) à la position du curseur.
* printw() affiche une chaîne formatée comme printf()
* addstr() affiche une chaîne
===== input =====
3 catégories de fonctions pour récupérer les entrées:
^ getch() | Récupère un seul caractère. Influencée par les fonctions d'initialisation tel que cbreak() |
^ scanw() | Similaire à sscanf() avec la capacité de récupérer l'entrée depuis n'importe quelle partie de l'écran. |
^ getstr() | Récupère une chaîne et met à jour le pointeur fournit.|
Exemple d'utilisation de [[dev:ncurses:exemples:getstr|getstr]]
===== Attributs =====
Les attributs permettent d'afficher des caractères avec certains effets. Utilisés avec parcimonie ils permettent de mettre en avant certaines informations.
Les fonctions **attron()**, **attroff()** utilisent des masques pour activer/désactiver plusieurs attributs simultanément.
//active le mode renversé et le clignotement
attron(A_REVERSE | A_BLINK);
La fonction **attrset()** définit l'attribut au lieu de l'activer, elle écrase la valeur précédente de l'attribut.
La fonction **attr_get()** permet de récupérer les attributs et les couleurs d'une zone de l’écran.
Un exemple d'utilisation des [[dev:ncurses:exemples:ncurses-attron|attributs]]
===== Références =====
* http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/printw.html
* http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html