getchar(); do ncurses, imprimi a "mensagem" direto sem eu digitar nada. [RESOLVIDO]

1. getchar(); do ncurses, imprimi a "mensagem" direto sem eu digitar nada. [RESOLVIDO]

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 29/05/2019 - 16:28h

Antes de tudo; sou iniciante em programação C, estou aberto a críticas construtivas ou sugestões.

Então, eu estou tentando criar um programa que informa qual tecla foi pressionada(assim como a função getchar(); do conio.h do windows), porém, o programa não solicita nada, apenas executa direto, e exibe isso:�
O correto seria não seria ele funcionar igualmente um scanf ou um getchar();?
Obs: Eu tenho a biblioteca ncurses, e compilei conforme a biblioteca exige.
(Procurei em fóruns, mas não objetive quaisquer resultados sobre o assunto).

Meu código:

#include <stdio.h>
#include <curses.h>

int main(void){

char o;
printf("Digite algo.\n");
o = getch();
printf("Tecla digitada:%c", o);

return 0;
}





  


2. Re: getchar(); do ncurses, imprimi a "mensagem" direto sem eu digitar nada. [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/05/2019 - 04:52h

Ao contrário do ConIO, para usar as funções da Curses você precisa de inicializar a biblioteca primeiro (initscr()), e antes de sair do programa terá de liberar os recursos que foram adquiridos durante a inicialização (endwin()).


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: getchar(); do ncurses, imprimi a "mensagem" direto sem eu digitar nada. [RESOLVIDO]

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 30/05/2019 - 13:12h

paulo1205 escreveu:

Ao contrário do ConIO, para usar as funções da Curses você precisa de inicializar a biblioteca primeiro (initscr()), e antes de sair do programa terá de liberar os recursos que foram adquiridos durante a inicialização (endwin()).


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)



Poderia mostrar um exemplo?
Estou testando aqui e não estou obtendo os resultados esperados.


4. Re: getchar(); do ncurses, imprimi a

Paulo
paulo1205

(usa Ubuntu)

Enviado em 03/06/2019 - 16:27h

int main(void){
initscr();
int ch=getch();
endwin();
printf("O código da tecla apertada foi: %d.\n", ch);
}


A inicialização da Curses é feita com initscr(). Essa função cuida não apenas de inicializar estruturas internas da biblioteca, mas também configura o terminal para responder de modo adequado a funções interativas. Depois disso, você pode chamar várias funções, incluindo getch().

Quando se chama endwin(), desfaz-se a inicialização que fora feita no terminal e em algumas das estruturas de dados. Note que eu só imprimo o valor lido depois de chamar endwin(). Se tivesse sido ao contrário, parte do retorno do terminal ao estado anterior à inicialização da Curses poderia incluir o apagamento da tela, o que faria a mensagem ser imediatamente apagada.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


5. Re: getchar(); do ncurses, imprimi a

Jhevi
Jhevison

(usa Arch Linux)

Enviado em 07/06/2019 - 09:24h

paulo1205 escreveu:

int main(void){
initscr();
int ch=getch();
endwin();
printf("O código da tecla apertada foi: %d.\n", ch);
}


A inicialização da Curses é feita com initscr(). Essa função cuida não apenas de inicializar estruturas internas da biblioteca, mas também configura o terminal para responder de modo adequado a funções interativas. Depois disso, você pode chamar várias funções, incluindo getch().

Quando se chama endwin(), desfaz-se a inicialização que fora feita no terminal e em algumas das estruturas de dados. Note que eu só imprimo o valor lido depois de chamar endwin(). Se tivesse sido ao contrário, parte do retorno do terminal ao estado anterior à inicialização da Curses poderia incluir o apagamento da tela, o que faria a mensagem ser imediatamente apagada.




... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


Obrigado!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts