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

Meu codigo fica em loop infinito

Ele me pede a letra várias vezes e nunca chega na parte do printf. Segue o codigo abaixo :

#include <stdio.h>
#include <locale>
#include <string.h>

int main(){
    
    setlocale(LC_ALL, "Portuguese");
    
    char palavrasecreta[20];
    
    sprintf(palavrasecreta, "BATMAN"); /* o sprintf funciona como a variavel string em outras linguagens */
    
    int acertou=0, enforcou=0;

    
    do{
        char chute;
        printf("Digite seu chute: ");
        scanf(" %c", &chute);
        
        
        for(int i = 0; i < strlen(palavrasecreta); i++){ /* o strlen pertence a biblioteca string.h e serve para contar quantas letras um array de char possui */
            if(palavrasecreta[i] == chute){
                printf("A posição %i tem essa letra \n", i);
            }
        }
        
    } while(!acertou && !enforcou); /* o ! é a negação de uma variavel boleana */ 
}
2 respostas

Você não está modificando as variáveis do loop do-while.

Para parar, você deve modificar as variáveis acertou e enforcou conforme sua necessidade. Caso contrário, o loop nunca vai parar...

Dê uma olhada no funcionamento do do-while

solução!

me sinto um idiota kkkk, eu simplesmente tirei o caps lock da palavra contida no sprintf e funcionou

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software