« Curses en C » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « Vi (vi en tout cas) fait un truc que j'ai toujours trouvé magique. Il prends la possession de l'écran, affiche le texte et les messages, puis le rends comme il l'avait trouvé en entrant. Je sais faire ça en "frame buffer" si on travaille sur un écran physique mais pas en mode console. J'ai bien un vague souvenir de la lib curses.h utilisée sur des terminaux VT100 il y a une trentaine d'année mais c'est loin. == Démo en bash == La comm... ») |
mAucun résumé des modifications |
||
| Ligne 42 : | Ligne 42 : | ||
sudo apt install libncurses-dev | sudo apt install libncurses-dev | ||
</syntaxhighlight>Le résultat est le même que pour le bash mais c'est quand même mieux! | </syntaxhighlight>Le résultat est le même que pour le bash mais c'est quand même mieux! | ||
== Fonction putp() en C == | |||
* Objectif : envoyer une séquence terminfo au terminal | |||
* Prototype : | |||
int putp(const char *str); | |||
* Usage : | |||
putp(tigetstr("civis")); // cache le curseur | |||
* Équivalent : | |||
tputs(str, 1, putchar); | |||
* Nécessite : | |||
#include <term.h> | |||
-lncurses | |||
Version du 19 octobre 2025 à 14:00
Vi (vi en tout cas) fait un truc que j'ai toujours trouvé magique. Il prends la possession de l'écran, affiche le texte et les messages, puis le rends comme il l'avait trouvé en entrant.
Je sais faire ça en "frame buffer" si on travaille sur un écran physique mais pas en mode console.
J'ai bien un vague souvenir de la lib curses.h utilisée sur des terminaux VT100 il y a une trentaine d'année mais c'est loin.
Démo en bash
La commande tput est là pour ça. Moi je ne m'en servait que pour tput clear!
tput smcup
echo -e "\033[1;1HHello World!"
sleep 5
tput rmcup
Essayez c'est magique !
En C
Bon, on désire faire un "vrai" programme alors on programme en C.
#include <stdio.h>
#include <stdlib.h>
#include <term.h>
#include <unistd.h>
int main() {
setupterm(NULL, STDOUT_FILENO, NULL);
const char *smcup = tigetstr("smcup");
if (smcup != NULL) {
putp(smcup);
}
printf ("\033[1;1HHello World!\n");
sleep(5);
const char *rmcup = tigetstr("rmcup");
if (rmcup != NULL) {
putp(rmcup);
}
return 0;
}
On compile par :
gcc -o test test.c -lncurses
Si la lib curses-dev n'est pas là:
sudo apt install libncurses-dev
Le résultat est le même que pour le bash mais c'est quand même mieux!
Fonction putp() en C
- Objectif : envoyer une séquence terminfo au terminal
- Prototype :
int putp(const char *str);
- Usage :
putp(tigetstr("civis")); // cache le curseur
- Équivalent :
tputs(str, 1, putchar);
- Nécessite :
#include <term.h> -lncurses