Aircrash Postado Setembro 11, 2007 Denunciar Share Postado Setembro 11, 2007 Pessoal estou iniciando nesta linguagem e gostaria de tirar um dúvida, estou criando um menu do tipopressione 1 para fazer aquilo, 2 para fazer isso, 3 para acolá e assim por diante.Porém se eu uso o scanf para ler a variável obrigatóriamente o usuária precisa digitar o número seguido de enter.Gostaria do usuário digitasse o número e este já fosse armazenado na variável. tipo o getch().tentei usar o getch() da seguinte formavariavel = getch() o problema é que quando coloco a varíavel em uma estrutura de escolha a estrutura não consegue "entender" o valor ex:printf("digite 1 para isso, 2 para aquilo");scanf("%d", &variavel);variavel = getch()switch (variavel){case 1:faça isso;case 2:faça aquilo;default:faça acola;}Quando uso o código similar a este o swtch sempre cai na função default mesmo quando eu digito 1se eu uso o scanf ele funciona direitinho, mas me obriga a pressionar o enter e eu não gostaria de ter que esperar o enter.Alguém pode me auxíliar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Yakuza Postado Setembro 11, 2007 Denunciar Share Postado Setembro 11, 2007 (editado) Olha eu também estou iniciando no C, estudando sozinho e tal, mas creio que tem algo meio errado aqui:scanf("%d", &variavel); /*A função scanf irá capturar o 1 ou o 2*/ variavel = getch() /*Aqui você está colocando o valor da variável variavel como uma função, no caso getch(), que também serve para capturar algo digitado*/ switch (variavel) /*Switch, abre os cases com a intenção de executar o que o usuário escolheu, só que aí é que está. Você setou no scanf um valor para a variável e agora ta setando ela como função getch(). Por isto "não entende o valor".Posso estar errado, porque sou iniciante como já disse, entretando acredito que seja isso. Editado Setembro 11, 2007 por Yakuza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aircrash Postado Setembro 11, 2007 Autor Denunciar Share Postado Setembro 11, 2007 na verdade eu digitei errado, o comando scanf e o getch eu não uso junto eu coloquei somente como exemplo, mas o código é sem o scanf, quando eu uso sem o scanf ou seja com o getch do jeito que eu escrevi, o switch não funciona, agora se eu usar o scanf (sem o getch) o swtich funciona. Na verdade o que eu coloquei foi o que eu sei (o que é muito pouco) se você tiver uma sugestão para que quando o cliente digitar uma tecla esta fosse armazenada em uma variavel sem a necessidade de pressionar o enter, me informe, por favor, o código que pode suprir esta necessidade. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 G. Fressato Postado Setembro 11, 2007 Denunciar Share Postado Setembro 11, 2007 Caro aircrash,O scanf() precisa necessariamente que seja digitado 'enter' para dar entrada do valor na variável.O que você pode fazer é usar o getch() e com o switch comparar o caractere digitado.Um exemplo:. . . variavel = getch(); switch(variavel){ case '1': execute isso;break; case '2': execute aquilo;break; default: não execute nada;break; } . . .Tá aí! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aircrash Postado Setembro 12, 2007 Autor Denunciar Share Postado Setembro 12, 2007 Fressato uma palavra sua matou meu problema "caracter" eu tava levando em consideração que os caracteres 1,2,3 era numerais ou seja inteiros, por isso o scanf funcionava e o getch não.colocando o ' apostrofo entre os números faz com que estes se tornem caracteres "char" epor isso funcionam com o getch() Que recebe um char em vez de um int.To começando a gostar de C, este é apenas parte do trabalho que eu estou fazendo na faculdade para automatizar um autorama (Fazer ele contra voltas e tempos). Grande parte já está solucionada, mas este é o meu primeiro programa e tenho bastante dúvidas, ainda bem que achei este forum.Obrigado pela ajuda de todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 G. Fressato Postado Setembro 12, 2007 Denunciar Share Postado Setembro 12, 2007 Opa, bom saber que o problema foi resolvido. O melhor é trabalhar com caracteres na captura do teclado, ou então comparar com os valores hexadecimais respectivos na tabela ASCII. :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Aircrash
Pessoal estou iniciando nesta linguagem e gostaria de tirar um dúvida, estou criando um menu do tipo
pressione 1 para fazer aquilo, 2 para fazer isso, 3 para acolá e assim por diante.
Porém se eu uso o scanf para ler a variável obrigatóriamente o usuária precisa digitar o número seguido de enter.
Gostaria do usuário digitasse o número e este já fosse armazenado na variável. tipo o getch().
tentei usar o getch() da seguinte forma
variavel = getch() o problema é que quando coloco a varíavel em uma estrutura de escolha a estrutura não consegue "entender" o valor ex:
printf("digite 1 para isso, 2 para aquilo");
scanf("%d", &variavel);
variavel = getch()
switch (variavel)
{
case 1:
faça isso;
case 2:
faça aquilo;
default:
faça acola;
}
Quando uso o código similar a este o swtch sempre cai na função default mesmo quando eu digito 1
se eu uso o scanf ele funciona direitinho, mas me obriga a pressionar o enter e eu não gostaria de ter que esperar o enter.
Alguém pode me auxíliar.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.