Olá, Manoel!
Peço desculpa por você ter essa experiência aqui na plataforma.
Sei como bem como é difícil iniciar no mundo da programação e entendo como as coisas podem ser frustrantes quando não dão certo, e particularmente falando já perdi muito cabelo tentado resolver problemas.
O seu código está tendo problemas com a leitura do caractere de entrada, o que pode estar causando o comportamento inesperado. Isso geralmente acontece porque o scanf("%c", &chute);
lê o caractere digitado, mas deixa o caractere de nova linha (\n
) no buffer de entrada, o que pode afetar leituras subsequentes.
Uma maneira de resolver isso é adicionar um espaço antes de %c
no scanf
, assim: scanf(" %c", &chute);
. O espaço faz com que o scanf
ignore quaisquer caracteres de espaço em branco, incluindo novas linhas, antes de ler o próximo caractere.
Aqui está uma versão ajustada do seu código:
#include <stdio.h>
#include <string.h>
int main() {
char palavrasecreta[20];
sprintf(palavrasecreta, "MELANCIA");
int acertou = 0;
int enforcou = 0;
do {
printf("Qual letra?\n\n");
char chute;
scanf(" %c", &chute); // Adicionei um espaço antes de %c
for (size_t i = 0; i < strlen(palavrasecreta); i++) {
if (palavrasecreta[i] == chute) {
printf("A posicao %zu tem essa letra\n", i);
}
}
} while (!acertou && !enforcou);
return 0;
}
Tente essa modificação e veja se isso resolve o problema que você está enfrentando.
Espero que isso ajude a destravar o seu progresso. Continue firme, aprender programação é um processo e cada pequeno passo é uma vitória!
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.