+ Responder ao Tópico



  1. #1

    Padrão Tem algo de errado?

    Olá galera blz? essa é minha primeira visita e tenho a seguinte duvida.

    estou montando um menu em C e usando o comando getch() e armazenando em uma variavel... mas nao consigo usar essa variavel no IF......

    codigo:

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

    int main(void) {
    initscr();
    int opcao ;
    for (;
    {
    move(3,5);
    printw("[1] Opcao numero 1.");
    move(5,5);
    printw("[2] Opcao numero 2.");
    move(7,5);
    printw("Opcao:");
    opcao=getch();
    move(10,5);
    if (opcao==1){
    printw("Voce digotou a opcao: 1");
    getch();
    break;
    }else{
    printw("Voce digitou a opcao: 2");
    getch();
    break;
    }
    }
    endwin();
    }

  2. #2

    Padrão

    olha, nunca mexi com coisas interatvas em C (só com simulações numéricas), mas pesquisando rápidamente sobre o uso de ncurses pra pegar input de 1 char achei isso, veja se é pertinente:
    Question 19.1
    onde dizem que chamando cbreak() antes do getch() que vai desabilitar o buffer de linha, fazendo q não seja necessário esperar pelo caractere de newline, provavelmente produzindo o resultado esperado.

    Dá uma olhada também no exemplo em:
    http://tldp.org/HOWTO/NCURSES-Progra...OWTO/keys.html



  3. #3

    Padrão

    Tenta usar opcao do tipo char.

    char opcao;
    opcao = getch();

    e faz a comparação com strcmp (não lembro a syntaxe).

  4. #4

    Padrão

    Não pessoal o problema é o seguinte... Tudo bem você recebendo um char e jogar em um int. O problema é você compara o int com 1. Porque o ao jogar o valor '1' (char) em um int ele vira outro valor, que é correspondente ao caracter '1' da tabela ASCII, isto é 49 (em int). Se vc quiser pode fazer o seguinte código


    int opcao;
    (...)
    opcao=getch();
    if(opcao == 49){
    (...)
    }else{
    (...)
    }



    ou caso queira evitar a consulta à tabela ASCII utilize o seguinte código:

    char opcao;
    (...)
    opcao=getch();
    if(opcao == '1'){
    (...)
    }else{
    (...)
    }

    Não se esqueça das aspas simples no trecho opao == '1' pois indica que é um char.

    Avisa ai se der tudo certo, blz?!