Olá pessoal,
Tive um problema comum que apareceu bastante aqui no fórum, porém nenhuma solução que eu vi foi a mesma que eu consegui encontrar.
Uso o VS Code e meu programa pedia para digitar a letra e parava, portanto eu achava que o meu Do/While não estava executando, porém o problema era na hora de executar o for.
Acontece que a comparação do for ---- if(palavrasecreta[i] == chute) ----- estava comparando letra minúscula com maiúscula da "MELANCIA". Deixo o código abaixo com minha resolução:
OBS: é só incluir a biblioteca ctype.h (para poder usar o toupper) e o chute = toupper(chute) dentro do do/while, esse código irá converter automaticamente o carácter digitado no chute para maiúscula.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main () {
char palavrasecreta[20];
sprintf(palavrasecreta, "MELANCIA");
int acertou = 0;
int errou = 1;
do {
char chute;
printf("Qual a letra?\n");
scanf("%c", &chute);
chute = toupper(chute);
for (int i = 0; i < strlen(palavrasecreta); i++) {
if(palavrasecreta[i] == chute) {
printf("A posicao %d tem essa letra!\n", i);
}
}
} while (!acertou && !errou);
}