1
resposta

Desabafo

  • Eu estou aqui na alura justamente pq não sei muita coisa sobre computação e quero aprender, pois bem , venho seguindo tudo direitinho , desde do começo do curso , e já faz quase uma semana que estou travado, sem sair do lugar , pois como ainda estou "aprendendo" não sei como funciona um compilador , depurador e tals.
  • Quando é a variável que não é reconhecida como igual ao strlen , altero , agora quando faço isso , o código é executado com problemas e se tento fazer uma maldita modificação para ver se mudar alguma coisa ,muda , ele não "roda" .
  • Muito bem , nesse caso eu venho até o forum , não só nesse como tbm em outros cursos e coloco minha dúvida aqui , passa 1 , 2 ,3 dias e nada....e o tempo passa assim................Já paguei tbm né.......
  • Vou deixar aqui o código e algumas fotos de como é processo (não seja muito facil subir fotos para cá) para ver se alguem se dispõe a vir me "acudir"

#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);


for( size_t i = 0;i <  strlen(palavrasecreta);i++){
if(palavrasecreta[i] == chute){
printf("A posicao %d tem essa letra\n",i);
}
}

}while(!acertou && !enforcou);

}
1 resposta

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 ✓.