Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gamemaster

Problema de leitura

Recommended Posts

Olá! Sou Alexandre, e é meu primeiro tópico aqui, onde usarei o nick gamemaster.
Começarei com uma duvida:

Num programa meu, há a opção de ler um inteiro, mas quando o usuário digita um char ou string, o programa dá um bug. Queria saber se isso é normal e a solução, tem como converter o dado lido pra inteiro?

 

O programa é mais ou menos assim:

 

 

while (x != 0){

Menu

1 - opção 1

2- opção 2

0 - opção 3

 

Qual opção deseja: //Aqui ele le o dado

 

switch(x)

case 1:

...

case 2:

...

case 0:

...

default:

...

getch();

 

}

 

 

 

 

BUG:

 

Só que quando o usuario digita, por ex, a letra 't' o programa vai pro default, e quando o usuario digita algo pra sair, ele sai e volta pro default sem eu fazer nada. Mas isso nao acontece caso eu vá pro default digitando -1 ou 10 por ex. Acho q o problema é o fato de tá lendo um char num int.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então comece certo:

1- Título descritivo (conforme regras do fórum)

2- Tag code quando for postar código

 

As letras são representadas por inteiros da tabela ASCII. 't' é maior que 2 e como vc não especificou a lógica de processamento, vai pro default mesmo.

 

Sobre voltar sem fazer nada: pesquise sobre sujeira (ou quebra de linha) no buffer de entrada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O getch() lê um caractere e retorna o valor ASCII dele. É bem diferente de ler com scanf("%d"). Para ler a entrada 2, o valor retornado pelo getch() é 50, enquanto que o scanf possui "formatação de entrada" (por não lembrar um nome melhor) indicando se vc vai ler um inteiro, char, string, float ou double.

 

Não lembro se era uma função do C99 (o que afetaria a portabilidade do código).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.