Funcao getch() no linux [RESOLVIDO]

1. Funcao getch() no linux [RESOLVIDO]

Cassiano Dantas
KWxMASTER

(usa Ubuntu)

Enviado em 07/03/2016 - 17:10h

Ola, galera,

Estou com um problema em um programa bem simples com getch() no linux, o que acontece e que ele nao demostra o primeiro printf, sendo que o getch limpa a tela e apertando uma tecla ja mostra o resultado.

Se poderem me ajudar.

Segue o codigo abaixo :

#include <stdio.h>
#include <ncurses.h>



void main() {


char tst;



printf ("Digite uma letra:");

initscr();

tst = getch();

endwin();


printf ("letra digitada foi : %c \n",tst);


}




  


2. Re: Funcao getch() no linux

Paulo
paulo1205

(usa Ubuntu)

Enviado em 07/03/2016 - 17:40h

Alguns problemas:

    1) O tipo de retorno de main() deve ser int, não void.

    2) A mesma função main() deve ser declarada para não receber argumentos (com a palavra-chave void dentro dos parênteses), ou para receber exatamente dois argumentos, sendo o primeiro do tipo int (um contador da quantidade de elementos do próximo argumento) e o segundo do tipo ponteiro para ponteiro para char (que funciona como um vetor de strings, que armazenam em forma de texto argumentos passados ao programa pelo sistema operacional). Deixar os parênteses vazios, como você fez, significa, em C, que main() pode receber uma quantidade qualquer de argumentos de quaisquer tipos.

    3) Apagar a tela é parte do que faz a função initscr(). O fato de você mostrar a mensagem antes de chamá-la realmente fará com que a referida mensagem seja apagada.

    4) Depois que você corrigir a ordem de inicialização e impressão de mensagem, possivelmente você deverá usar printw() ou mvprintw() em vez de printf().


3. Re: Funcao getch() no linux [RESOLVIDO]

Cassiano Dantas
KWxMASTER

(usa Ubuntu)

Enviado em 08/03/2016 - 00:11h

paulo1205 escreveu:

Alguns problemas:

    1) O tipo de retorno de main() deve ser int, não void.

    2) A mesma função main() deve ser declarada para não receber argumentos (com a palavra-chave void dentro dos parênteses), ou para receber exatamente dois argumentos, sendo o primeiro do tipo int (um contador da quantidade de elementos do próximo argumento) e o segundo do tipo ponteiro para ponteiro para char (que funciona como um vetor de strings, que armazenam em forma de texto argumentos passados ao programa pelo sistema operacional). Deixar os parênteses vazios, como você fez, significa, em C, que main() pode receber uma quantidade qualquer de argumentos de quaisquer tipos.

    3) Apagar a tela é parte do que faz a função initscr(). O fato de você mostrar a mensagem antes de chamá-la realmente fará com que a referida mensagem seja apagada.

    4) Depois que você corrigir a ordem de inicialização e impressão de mensagem, possivelmente você deverá usar printw() ou mvprintw() em vez de printf().


Opa! Utilizei o printw() entao funcionou valeu paulo






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts