Ir ao conteúdo

Posts recomendados

Postado

Olá, estou com problemas nesse código. Quando boto pra rodar, ele lê até o primeiro carácter e depois finaliza o programa.

#include <stdlib.h>

int main()
{
    int a, subir, decer, frente, volta, altura = 0, distancia = 0;
    char comando;
    scanf("%d", &a);
    for (; a > 0; a--)
    {
        comando = getchar();
        if (comando == 'S' && altura <= 200)
            altura += 10;
        if (comando == 'F' && distancia <= 2000)
            distancia +=10;
        if (comando == 'D' && altura > 0)
            altura += -10;
        if (comando == 'V')
            distancia += -10;
    }
    printf("%d %d\n", altura, distancia);
	return 0;
}

Podem me ajudar? 

  • Curtir 1
Postado

Substitua:

comando = getchar();

Por:

scanf(" %c%*c", &comando);

Observe que na string de especificadores coloquei espaço antes do %c para descartar caracteres vazios (espaço, tabulação, nova linha, etc), assim o %c só captura o primeiro caractere não-vazio encontrado. E o * no %*c serve para descartar o que for lido, ou seja lê algo mas não guarda em uma variável, então depois de de 1 caractere com %c ele lê e descarta outro caractere, no caso isso serve para eliminar o caractere nova linha '\n' que é inserido quando o usuário aperta Enter.

 

Para entender melhor qual é o problema leia esses posts:

 

  • Curtir 3

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...