Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

printf com bug

Boa noite, quando compilo o código , ele reproduz a pergunta "qual a letra" milhares de vezes, por exemplo:

  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 2 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 2 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 5 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 5 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 8 tem essa letra
  • Qual letra ?
  • & .'forca.exe'
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 8 tem essa letra
  • Qual letra ?
  • M
  • A posicao 0 tem essa letra
  • Qual letra ?
  • A posicao 8 tem essa letra
  • Qual letra ?
  • cd 'c:\Users\manoe\OneDrive\Área de Trabalho\Lógica_de_Programacao\cursos\Linguagem_C\forca.C\output'
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 2 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 2 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 5 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 5 tem essa letra
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 8 tem essa letra
  • Qual letra ?
  • & .'forca.exe'
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • Qual letra ?
  • A posicao 8 tem essa letra
  • Qual letra ?
  • E repete "A posicao 8 tem essa letra" quando roda novamente.
  • Eu estou usando o vscode no windows 11 e uso o gcc e uma extensão para compilar dentro do vscode, alguem sabe como resolver por favor ?
2 respostas

envie o código fonte por favor

solução!

Olá, Manoel. Tudo bem?

Parece que o problema está relacionado à forma como o scanf está capturando a entrada do usuário. Quando usamos scanf("%c", &chute);, ele pode deixar um caractere de nova linha (\n) no buffer de entrada, que é lido na próxima iteração do loop, causando a repetição da pergunta "Qual letra?".

Uma maneira de resolver isso é adicionar um espaço antes do %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) que estejam no buffer antes de capturar o próximo caractere.

Seu código ficaria assim com essa modificação:

do {
    char chute;
    
    printf("Qual letra? ");
    scanf(" %c", &chute); // Note o espaço antes do %c

    for(int i = 0; i < strlen(palavrasecreta); i++) {
        if(palavrasecreta[i] == chute) {
            printf("A posição %d tem essa letra\n", i+1);
        }
    }
} while (!acertou && !enforcou);

Espero ter ajudado.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!