esse comportamento ocorre em todos os terminais? Aqui, ao executar o código, funcionou normalmente.
resposta que o chatgpt deu talvez te ajude.
O comportamento que você está observando no seu programa pode estar relacionado ao buffer de entrada padrão (stdin). Em alguns ambientes, como o terminal do Git Bash ou o MinGW no Windows, pode ocorrer uma leitura do scanf de forma antecipada, especialmente quando há algum dado na entrada ou quando o terminal está funcionando de uma forma diferente.
Aqui estão algumas sugestões para resolver esse problema:
- Limpe o buffer de entrada antes de scanf: Uma prática comum é limpar o buffer para evitar que valores indesejados interfiram com a leitura de scanf.
fflush(stdin); // Limpa o buffer de entrada
printf("\nDigite o seu chute: ");
scanf("%d", &chute);
- Use setbuf(stdout, NULL); para desativar o buffer de saída: Em alguns casos, desativar o buffer de saída pode ajudar a exibir as mensagens na ordem correta.
#include <stdio.h>
int main() {
setbuf(stdout, NULL); // Desativa o buffer de saída
// Variáveis
int numero_secreto;
int chute;
// Imprime cabeçalho do jogo
printf("—————————————————————————————————————————\n");
printf("* Bem-vindo a nosso jogo de adivinhação *");
printf("\n—————————————————————————————————————————\n");
// Atribuição de valor
numero_secreto = 42;
printf("\nDigite o seu chute: ");
scanf("%d", &chute);
printf("\nSeu chute é %d", chute);
return 0;
}
- Executar o código em outro ambiente: Se o problema persistir, tente compilar e executar o programa em um terminal diferente, como o terminal de comando padrão do Windows (cmd) ou PowerShell. Alguns ambientes de terminal podem tratar a entrada e a saída de forma um pouco diferente.