Olá, Renan!
Pelo que você descreveu, parece que o loop de erros não está sendo encerrado corretamente quando você chuta algumas letras certas e depois outras erradas. Para resolver esse problema, é importante verificar a lógica da função enforcou e como ela está tratando os erros.
Uma possível solução seria adicionar uma condição dentro do loop de erros para verificar se a letra chutada já foi chutada anteriormente. Assim, você evita que o contador de erros seja incrementado novamente para uma letra que já foi chutada corretamente.
Aqui está um exemplo de como você pode fazer isso:
void enforcou(char palavraSecreta[], char chutes[], int tentativas) {
int erros = 0;
for (int i = 0; i < tentativas; i++) {
if (jachutou(palavraSecreta, chutes, chutes[i])) {
printf("Você já chutou a letra '%c' e acertou!\n", chutes[i]);
continue; // Pula para a próxima iteração do loop
}
if (!chutou(palavraSecreta, chutes, chutes[i])) {
erros++;
printf("Você errou o chute da letra '%c'!\n", chutes[i]);
}
// Restante do código...
}
// Restante do código...
}
Nesse exemplo, a função jachutou é chamada dentro do loop de erros. Se a letra já tiver sido chutada anteriormente e acertada, uma mensagem é exibida e o loop pula para a próxima iteração, sem incrementar o contador de erros.
Lembre-se de adaptar o código de acordo com a sua implementação atual, mas espero que essa sugestão possa te ajudar a resolver o problema do loop infinito nos erros.
Bons estudos!