Utilizando a biblioteca NCURSES - Parte I

Este artigo vai ajudar você a utilizar a biblioteca NCURSES, começaremos com um programa olamundo.c onde aprenderemos o básico da biblioteca NCURSES e nos próximos artigos estarei dificultando os programas.

[ Hits: 165.442 ]

Por: Leonardo Barrozo dos Santos em 27/02/2003


Primeiro programa



Agora vamos ao que interessa, para ensinar a vocês a utilizar a NCURSES eu vou colocar um programa e vou explicando o que cada linha de comando faz e a cada novo artigo eu vou acrescentando novas funções ao nosso programa.

Neste exemplo abaixo nós vamos criar o famoso programa "Olá Mundo":
{ olamundo.c }

#include <curses.h> //Incluiremos a biblioteca ao nosso sistema
#include <stdio.h>

void sair (void);  //Esta função fará com que o programa seja fechado

int main(void)
{
    initscr();   /*Esta função  inicializa a ncurses. Para todos os programas  
                   devemos sempre inicializar a ncurses e depois finalizar, como
                  veremos adiante. */


    start_color(); //Esta função torna possível o uso das cores

//Abaixo estamos definindo os pares de cores que serão utilizados no programa
    init_pair(1,COLOR_WHITE,COLOR_BLUE); //Texto(Branco) | Fundo(Azul)
    init_pair(2,COLOR_BLUE,COLOR_WHITE); //Texto(Azul) | Fundo(Branco)
    init_pair(3,COLOR_RED,COLOR_WHITE);  //Texto(Vermelho) | Fundo(Branco)

    bkgd(COLOR_PAIR(1));  /*Aqui nós definiremos que a cor de fundo do nosso
                                      programa será azul e a cor dos textos será branca.*/


    attron(COLOR_PAIR(3)); /*Estamos alterando o par de cores para 3 em vez
                                          de utilizar o par de cor por omissão(1).*/


    move(2,1);  //Aqui estamos movendo o cursor para a linha 2 coluna 1.
    printw("Olá mundo!!!");  //Imprimimos um texto na tela na posição acima.
    attroff(COLOR_PAIR(3));  /*Estamos alterando o par com a cor por omissão,
                             ou seja, retornando para o par de cor 1. */

    attron(COLOR_PAIR(2));  
    move(3,1);
    printw("Qualquer tecla para sair."); /*Imprimimos um texto na tela na
                                                        posição acima. */

    attroff(COLOR_PAIR(2));
    refresh();    //Atualiza a tela
    getch();      //Fica esperando que o usuário aperte alguma tecla

    sair();    // Sai do programa
}

void sair()
{
    endwin(); /*Sempre que finalizarmos um programa com a biblioteca curses,
                     devemos executar este comando.*/

    exit(0);  
}
Agora é só compilar:

gcc olamundo.c -o olamundo -lncurses

Você pode fazer o download do código-fonte desta página clicando no link abaixo:
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Compilando programas que utilizam a NCURSES
   3. Primeiro programa
   4. Conclusão
Outros artigos deste autor

Utilizando a biblioteca NCURSES - Parte III

Introdução à linguagem C - Parte I

Utilizando a biblioteca NCURSES - Parte II

Introdução à linguagem C - Parte II

Leitura recomendada

Substituindo a biblioteca conio.h no Linux usando ncurses curses.h

Programando com uma granada de mão: uma visão da linguagem C

Reprodução de arquivos WAV com SDL_mixer e linguagem C

Gerencie suas contas financeiras pessoais com Terminal Finances

Ponteiros void na linguagem C

  
Comentários
[1] Comentário enviado por marcmarq em 25/02/2004 - 20:12h

Pessoal tentei rodar o programa desta página e ele não rodou.
Aliás, entrei em outro site e tentei rodar um básico "Ola MUNDO!" e ele também não rodou.
Estou com um Red Hat 9.0. e estou compilando via terminal, o que eu estou fazendo de errado?
Dei uma olhada na pasta /usr/lib/include e achei o header ncurses.h lá, quer dizer que a ncurses está instalada?
Senão estiver como posso instala-la?

[2] Comentário enviado por sniper_c/c++ em 10/12/2004 - 13:39h

Está faltando incluir a biblioteca stdlib.h para a funcao exit (status);

[3] Comentário enviado por sniper_c/c++ em 10/12/2004 - 13:47h

pq quando tento compilar arquivo do tipo .cpp sá erro???

[4] Comentário enviado por emax17 em 28/03/2005 - 15:22h

compile usando g++ e adicione a biblioteca stdlib.h para a função exit

[5] Comentário enviado por FireBird em 08/03/2006 - 16:17h

Cara.Foi mal ai... desculap se eu estiver cometendo alguma burice... asm baixei esse programa e compilei ele... beleza...funcionou.. so que saiu tudo preto e branco... era pra sair assim mesmo? se era..intaum por que usar esses comandos de cores?

[6] Comentário enviado por Von_Doom em 01/11/2010 - 08:29h

Em http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/intro.html tem um tutorial completo de ncurses (em inglês), inclusive para download.

[7] Comentário enviado por RuizBRX11 em 28/03/2012 - 08:18h

O código fonte do "olá mundo" mostrou alguns erros antes de compilar :

Se eu compilar usando o codigo gcc olamundo.c -o olamundo -lncurses, mostra um erro no comando exit()
olamundo.c:41: warning: incompatible implicit declaration of built-in function ‘exit’

E se eu compilar usando gcc -Wall -o "olamundo" "olamundo.c" -lncurses

olamundo.c: In function ‘sair’:
olamundo.c:41: warning: implicit declaration of function ‘exit’
olamundo.c:41: warning: incompatible implicit declaration of built-in function ‘exit’
olamundo.c: In function ‘main’:
olamundo.c:35: warning: control reaches end of non-void function

Mas funcionou, muito bom !

[8] Comentário enviado por RuizBRX11 em 28/03/2012 - 08:30h

Agora compilei da mesma forma mas inclui a biblioteca stdlib.h, como sugeriu emax17, e não retornou erro nenhum, no gcc mesmo.
Porem o caractere com acento agudo não apareceu, ficou aquele ponto de interrogação no lugar dele, tem alguma biblioteca que resolve isto?
Valeu !

[9] Comentário enviado por gabriel4g em 07/12/2017 - 19:46h

Não entendo uma coisa eu compilei o código e não tava com suporte a caracteres ñ ñ ç... mais quando eu redigitei e compilei o terminal estava lendo os caracteres normalmente.

OBS: para o código compilar direito tive que importar o "stdlib"

[10] Comentário enviado por SaruMan64 em 29/12/2017 - 23:48h

Olá!!!
Eu fiz de duas formas, a primeira copiei o codigo-fonte, e a segunda fiz o download, porem ambos na hora da compilação deram erro de indentificação das sintaxes da biblioteca ncurses. Tentei compilar das seguintes formas:

1º $gcc olamundo.c -o olamundo -Incurses
2º $gcc -Wall -o "olamundo" "olamundo.c" -Incurses

Não sei se fiz algo de errado, mas foi assim que fiz. Também inclui a bliblioteca stdlib.h.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts