Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Repetição

Escrevi esse código que a "Forca de uma letra só". Eu escolhi a letra que é a resposta, no caso o 'q', e o usuário tem 5 chances pra acertar. Quando rodo o programa, é possivel gastas a primeira tentativa tranquilamente, a segunda também mas aí ele pula a terceira, pede pra inserir o chute da quarta tentativa e pula a quinta, dando a resposta automaticamente e encerrando o programa. Alguém consegue identificar porque ele ta pulando 2 tentativas? Porque na minha visão está tudo correto e não consigo entender o que há de errado

#include<stdio.h>

int main(){

char c = 'q', letra;
int i, j=4;

printf("<<Forca de uma letra so>>");

for(i=0;i<5;i++){

    printf("\nQual a letra? ");
    scanf("%c", &letra);
    setbuf(stdin,NULL);

    if(letra == c){ 
        printf("ACERTOU!");
        return 0;
    }

    if(letra != c){

        if(j==1){
            printf("Ultima chance!!!\n");
        }else

        if(j==0){
            printf("Acabaram suas chances. A letra correta e '%c'",c);
        }else

        printf("Errado! Voce tem mais %d chances\n",j);
        j--;
    }  
} }
2 respostas
solução!

Fala Vitor blza. Quando digitamos um caractere e teclamos Enter, o caractere '\n' vai para o buffer e é lido pelo próximo scanf. Por isso acontece esse problema.

Uma forma de resolver é colocando um espaço antes do "%c".

Ficaria assim: scanf(" %c", &letra);

Funcionou perfeitamente Hugo! Muito obrigado pela ajuda, eu não tinha ideia nenhuma sobre essa "particularidade" do scanf. Isso foi de grande ajuda. Obrigado mesmo =D