Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

hangman dando erro na hora de executar a lista de palavras e traços

Não consigo entender onde meu código está gerando este erro. Toda vez que eu o rodo, a saída do acerto e do erro são diferentes do que o esperado.. Saída:

john@Lennon:~/Documentos/C-lang/Programas/hangman$ ./a.out 
_ _ _ _ _ _ _ _ 
M
M E L A N C I A 
X
M E L A N C I A 
E
M E L A N C I A 
Y
M E L A N C I A 
Z
M E L A N C I A

Meu código atual (eu montei ele com as variáveis levemente diferentes mesmo).

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

int main(){
//variáveis
  char
    palavrasecreta[10],
    chute,
    chutes[26];
  int
    ctdr,
    ctdr2,
    tentativas,
    acertou,
    enforcou,
    achou;
//atribuição de valor inicial (quando necessário).
  acertou = 0;
  achou = 0;
  enforcou = 0;
  tentativas = 0;
  sprintf(palavrasecreta, "MELANCIA");
//início do jogo
  do{
    for(ctdr = 0 ; ctdr < strlen(palavrasecreta) ; ctdr++){
      for(ctdr2 = 0 ; ctdr2 < tentativas ; ctdr2++){
        if (chutes[ctdr2] == palavrasecreta[ctdr2]){
          achou = 1;
          break;
        }
      }
      if(achou){
        printf("%c ", palavrasecreta[ctdr]);
      }else{
        printf("_ ");
      }
    }
    printf("\n");
    scanf(" %c", &chute);
    chutes[tentativas] = chute;
    tentativas++;
  } while(!acertou && !enforcou);

}
1 resposta
solução!

Eu mesmo descobri o que fiz de errado. O fato do loop ter começado após eu definir o valor bool 0 para a variável achou fez com que no processo de repetição a variável nunca retornasse ao estado que ela precisava após eu atribuir 1 para ela.

Rookie mistake. Mas nada que um debug manual não resolva.