Olá Mubarak.
O que está gerando o erro é o operador <= que está utilizando no seu for:
int ganhou() {
for (int i=0; i<=strlen(palavra); i++) {
if (!jachutou(palavra[i])) {
return 0;
}
}
return 1;
}
Do jeito que está ele entra em uma posição de memoria invalida do vetor palavra, por exemplo, se sua palavra for MAÇA, o strlen(palavra) vai ser 5 e a posição 5 não existe já que o vetor começa no 0 e se você tentar acessar essa posição vai encontrar lixo de memoria e esse lixo de memoria quando for enviado para a sua função jachutou não vai ser encontrado entrando no seu if e indo para o return 0.
int ganhou() {
for (int i=0; i<strlen(palavra); i++) {
if (!jachutou(palavra[i])) {
return 0;
}
}
return 1;
}
Para resolver basta trocar o operador ( <= ) para o operador ( < ) e dessa maneira percorrer seu vetor de maneira correta.
Bons Estudos.